我希望将软件包(插件)导入当前目录之外。说我有一个目录结构:
/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文件夹下有多个软件包