【发布时间】:2020-06-11 22:07:07
【问题描述】:
我有一个 plugins 包,其中包含多个模块,每个模块定义一个类(每个类都是一个 插件)。
我的包结构如下:
plugins
├ __init__.py
├ first_plugin.py
├ second_plugin.py
└ third_plugin.py
一个插件文件通常看起来像这样,只包含一个类定义(必要时还有一些导入):
# in first_plugin.py
class MyFirstPlugin:
...
我希望最终用户能够像这样导入插件:
from plugins import FirstPlugin
而不必输入模块名称(这是当前需要做的):
from plugins.first_plugin import FirstPlugin
有没有办法通过直接在 __init__.py 文件中重新导出模块的类来实现这一点而不必像这样逐个模块地导入所有模块(当有很多时这会变得很麻烦模块):
# in __init__.py
from .first_plugin import FirstPlugin
from .second_plugin import SecondPlugin
from .third_plugin import ThirdPlugin
【问题讨论】:
-
由于您所有的插件都在一个包中,我对How to import members of all modules within a package? 的回答可能会有所帮助。
-
我也有同样的问题。只是想知道您是否发现并找到了解决方案?
-
我真的没有找到任何令人满意的东西......我想我有一些使用
dir()并按模块名称过滤的“黑客”想法(可以作为str访问Python),但它很快就会变脏。
标签: python python-3.x python-import