如何添加从x import *导入的模块数组?

时间:2013-01-10 06:34:07

标签: python module

我有一个包含我的应用程序插件的目录plugins,每个插件都是一个python文件,它定义了一个方法handle。结构如下:

- main.py
- plugins
      - hello.py
      - foo.py
      - bar.py
      - ...

现在,我想导入pluginsmain.py的所有模块:

from plugins import *

但是,我想得到一个模块列表,所以我可以遍历它,如:

for plugin in plugin_modules:
    plugin.handle(data)

我怎么能这样做?

2 个答案:

答案 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)