作成したモジュールを動的にロードしようとしています。
現在、これは正しく機能します。
import structures.index
しかし、動的にインポートして同じことを試してみると、失敗します。
struct = __import__("structures.index")
提供されるエラーは次のとおりです。
Error ('No module named structures.index',)
なぜ何かアイデアはありますか?
編集:フルスコープを使用する場合(それは一種の作品ですか?):
struct = __import__("neoform.structures.index")
これはエラーをスローしませんが、インデックスモジュールをロードするのではなく、代わりに「neoform」モジュールをロードします。
「struct」の結果は次のとおりです。
<module 'neoform' from '/neoform/__init__.py'>
また、副次的な質問として、動的にロードされたモジュール内でクラスをインスタンス化するにはどうすればよいですか?(すべてのモジュールに共通のクラス名が含まれていると仮定します)。
編集:解決策:( coonj&Rickに感謝)これは結局うまくいったものでした。理由は(まだ)わかりませんが、fromlist
「a」という文字を値として指定すると機能するため、「どうやら何か」である必要がありました(ファイルにクラスが1つしかないため、奇妙なことになります)。
def get_struct_module(self, name):
try:
return = __import__("neoform.structures." + name, fromlist='*')
except ImportError, e:
self.out.add("Could not load struct: neoform.structure." + name + "\n\n" + "Error " + str(e.args))