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 に答える