动态导入包含相对导入的模块

时间:2017-03-22 13:49:12

标签: python python-3.x python-import

以下是设置:

 program [root]
  ├─ main.py
  ├─ utils
  |   |
  |   └─ util1.py
  └─ plugins
      |
      └─ plugin1.py

现在我想用pkgutil.iter_modules()动态加载所有插件,效果很好。在我将from ..utils import util1放入plugin1之前。然后我得到

ValueError: attempted relative import beyond top-level package

我尝试了两件事。首先,我像这样使用importer.find_module().load_module()

for importer, module_name, ispkg in pkgutil.iter_modules(plugins.__path__):
    importer.find_module(module_name).load_module(module_name)

并且由于__package__在plugin1中为空,我也尝试了importlib.import_module()

module = importlib.import_module(package + "." + module_name, package=package)

package开头"plugins"并将plugins的每个子文件夹添加到字符串中,并使用.

分隔

我是如何做到这一点的?

0 个答案:

没有答案