0
我有一個項目,它有一個plugins
文件夾並與python Project.py --plugin TestPlugin.test
一起運行。如何根據命令行參數動態加載模塊?
的目錄結構如下:
plugins/
TestPlugin/
test.py
Project.py
PluginLoader.py
我無法加載test.py與插件加載的模塊。
在PluginLoader.py這是我的函數:
def loadPlugin(pluginName): #would be "TestPlugin.test" this is passed in from Project.py which gets the value from parseargs.
plugin = pluginName.rsplit(".", 1)
if len(plugin) == 2:
module = import_module(plugin[1], package='.'.join(["plugins", plugin[0]])
print(getattr(module, "test"))
return module
我不斷收到此錯誤:
python Project.py --plugin TestPlugin.test
Traceback (most recent call last):
File "Project.py", line 107, in <module>
plugin = PluginLoader.loadPlugin(comArgs.plugin)
File "PluginLoader.py", line 15, in loadPlugin
module = import_module(plugin[ 1 ], package = ".".join(["plugins", plugin[ 0 ] ]))
File "/Users/********/anaconda/lib/python3.5/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 956, in _find_and_load_unlocked
ImportError: No module named 'test'
我還是相當新的蟒蛇,我知道我可能不會設置正確地啓動我的模塊,但我不知道爲什麼。
所以它看起來像做這項工作,我還需要導入PluginLoader.py中的插件文件夾。感謝您指點我正確的方向。 – TripWired