我有一个目录 plugins 包含我的应用程序的插件,每个插件都是一个 python 文件,其中定义了一个方法 handle。结构如下:
- main.py
- plugins
- hello.py
- foo.py
- bar.py
- ...
现在我想在 main.py 中导入 plugins 中的所有模块:
从插件导入 *
但是,我想获取模块列表,这样我就可以遍历它,例如:
for plugin in plugin_modules:
plugin.handle(data)
我该怎么做?
请您参考如下方法:
试试 pkgutil:
import os.path, pkgutil
import mypackage
package = mypackage
mods = [n for _,n,_ in pkgutil.iter_modules([os.path.dirname(package.__file__)])]
for mod in mods:
package.__dict__.get(mod).handle(data)
