我研究了许多其他解决方案,但它们似乎无法直接解决我的问题。
我的目录结构如下:
main
main.py
plugins
plugin1
a.py
b.py
b.py有第一行
import a
我想要的是main.py能够从plugins目录动态加载插件
因此我已经将其设置为
import importlib
plugin = "plugin1" #the hope is that this will be defined dynamically eventually
plugin_name = ".b"
plugin_module = importlib.import_module(plugin_name, "Plugins." + plugin1)
我希望通过在plugin_module importlib命令中添加一个相对引用,使“ b”在运行时可以成功找到“ a”,但出现错误
ModuleNotFoundError:没有名为“ a”的模块。
我假设在尝试运行b时,它找不到-,但是如果有一种解决方法可以使用importlib的话,那会很棒(因为能够动态定义我使用的是我必不可少的
谢谢!
答案 0 :(得分:1)
这与importlib无关;如果您像from plugins.plugin1 import b
那样显式导入模块,则会看到相同的问题。这是因为a
不是一个模块,实际的模块名称是plugins.plugin1.a
。
您必须在插件中使用相对导入。将import a
更改为from . import a