使用importlib导入顶级软件包之外的软件包

时间:2019-12-12 14:52:47

标签: python python-importlib

我希望将软件包(插件)导入当前目录之外。说我有一个目录结构:

/plugins
   /test2
      __init__.py
      test_file.py
/src
   main.py

main.py具有以下内容:

import importlib
import pkgutil
import os
import sys

module_dir = os.path.join(os.path.dirname(__file__) + "/../plugins")

for finder, name, ispkg in pkgutil.iter_modules([module_dir]):
    print(finder, name, ispkg)
    test = importlib.import_module(name, package='..plugins')
    print(test.test_file.test_variable)

test_file.py具有以下内容:

test_variable = "testing"

使用当前代码,我将得到以下错误:

ModuleNotFoundError: No module named 'test2'

当我尝试添加sys.path.append(module_dir)以便包含路径时,会出现错误:

ValueError: attempted relative import beyond top-level package

实现此功能并导入包/插件的最佳方法是什么?假设我可以在plugin文件夹下有多个软件包

0 个答案:

没有答案