我有一个包含我的应用程序插件的目录plugins
,每个插件都是一个python文件,它定义了一个方法handle
。结构如下:
- main.py
- plugins
- hello.py
- foo.py
- bar.py
- ...
现在,我想导入plugins
中main.py
的所有模块:
from plugins import *
但是,我想得到一个模块列表,所以我可以遍历它,如:
for plugin in plugin_modules:
plugin.handle(data)
我怎么能这样做?
答案 0 :(得分:1)
尝试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)
答案 1 :(得分:0)
简单但不会得到一切:
import plugins
for i in range(len(plugins.__all__)):
getattr(plugins, plugins.__all__[i]).handle(data)