动态导入插件模块

时间:2018-09-07 23:30:28

标签: python-3.x

我正在尝试使用动态插件系统构建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导入的路径吗?

0 个答案:

没有答案