2012-01-25 4 views
1

私の開発環境はPython 2.6なので、importlib.import_module()構文は利用できません。私は、変数によって設定されたパスをモジュールにロードしようとしています。これは2.6でも可能ですか?Python 2.6で変数パスを持つモジュールをロードしますか?

バックグラウンドは、さまざまなベンダーのデバイスを多数ポーリングしているため、さまざまなディレクトリに、同じメソッドと戻り値の型を持つラッパークラスがあります。必要なデータを取得するベンダー固有のメソッドを処理します。だからベンダーに基づいて、私は "platform_foo.stats"または "platform_bar.stats"をロードし、結果のモジュールで同じメソッドを呼び出す必要があるかもしれません。

ので、このようなもの、これは明らかに非稼働コードで除い:

vendor = get_vendor(hostname) 
vendor_path = 'platform_%s.stats' % vendor 
import vendor_path 
stats = vendor_path.stats(constructor_args) 

任意のアイデア?

+0

http://stackoverflow.com/questions/3496592/conditional-import-of-modules-in-python –

答えて

1

exec()を使用すると、Pythonで動的コードを実行できます。

あなたのケースでは、このような何かがトリックを行う必要があります。

vendor = get_vendor(hostname) 
vendor_path = 'platform_%s.stats' % vendor 
exec("import " + vendor_path) 
stats = vendor_path.stats(constructor_args) 

これをいくつかの組み込みモジュールで試してみましたが、正常に動作していたようです。

関連する問題