我正在尝试使用动态插件系统构建python应用程序。
我有一个插件路径:
myapp/plugins/
---__init__.py
---plugin_manager.py
---myplugin/
------__init__.py
------myplugin_plugin.py
在我的plugin_manager.py中,我有一个可以运行的函数:
def load_plugins(self):
# Load plugins
for root, dirs, files in os.walk('plugins'):
for dir1 in dirs:
if dir1[:1] == "_" or dir1[:1] == ".":
continue
plugin_path = "plugins.%s.%s_plugin" % (dir1, dir1)
module = import_module(plugin_path, __package__)
当import_module导入 init .py和myplugin_plugin.py时,这些python文件中的导入调用失败,并出现Import错误:无法导入名称xxx。
myplugin_plugin.py具有许多导入,例如:
from db.database_manager import db
from plugins.plugin_manager import em
当将插件文件正常导入到我的主应用程序python文件中时,所有这些工作正常,但是通过插件管理器的load_module调用导入时,这些工作无效。
我的意图是通过PluginManager中的列表访问插件,从而允许将插件安装在plugins目录中,然后根据配置执行。
我需要处理通过import_module导入的路径吗?