2016-08-23 10 views
-2

本質的には、私は各プラグインがファイル内のそれぞれの機能を介して重要な機能にフックする拡張システムを作ろうとしています。この関数を実行し、 "plugins"ディレクトリをループするだけで戻り値を取得する方法が必要です。ディレクトリ内のすべてのファイルを再帰的にインポートし、それぞれの関数を実行するにはどうすればよいですか?

私はこれを行うことができますか? dinamicaly __import__

はそうあなただけのPYファイル(ないPYC)を探しているフォルダを反復処理し、それらをインポートする必要が使用して

+0

あなたは、[この答えは](http://stackoverflow.com/a/26623508/4014959)役に立つかもしれませんPython 2. –

答えて

0

ファイルをインポートすることができますが

for root, dirs, files in os.walk(src_path): 
    for f in files: 
     if f.endswith('.py'): 
      m = __import__(f) 

mは今、モジュールのinstancになりますあなたはそれの下my_funcと呼ばれる機能を持っている場合は、そう、あなたが行うことができます:

m.my_func()

か、文字列として関数の名前を持っている場合:それがために書かれているが

getattr(m,'my_func')()

+0

私は実際にこの問題を1つ持っています。関数を実行しようとすると、「モジュールのプラグインには属性がありません」というメッセージが表示されます。なぜこれが起こっているのか? – MiseroMCS

+0

まあ、Pythonはあなたのモジュールを見つけても関数ではないようです(あなたは実際にあなたの関数 'function'を呼び出しましたか?)あなたのモジュール内の他のものを定義してアクセスできるかどうかを見たり、 – DorElias

関連する問題