2

我有一个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)

我怎么能这样做?

4

2 回答 2

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)
于 2013-01-10T06:39:41.290 回答
0

简单但不会得到一切:

import plugins

for i in range(len(plugins.__all__)):
    getattr(plugins, plugins.__all__[i]).handle(data)
于 2013-01-10T06:45:35.397 回答