2017-05-24 5 views
1

私はサブパッケージを持つパッケージを持っています。パッケージをインポートするときに、サブパッケージの1つを動的に固定名として使用したいと思っています。これはどうすればいいですか?外部からimportlibを使ってPythonサブパッケージを作成する

/package 
    __init__.py 
    /subpackage1 
     __init__.py 
    /subpackage2 
     __init__.py 

私はfrom package import subpackageを行うことができるようにしたいと思い、パッケージ内__init__.pyは、環境変数に依存package.subpackageとして利用できる正しいサブパッケージ(1または2)を行います。

編集:私は具体的には、これを行うにはimportlib.import_module()を使用したいと思います。なぜなら、私はサブパッケージへのパスを与える文字列をまとめなければならないからです。

答えて

1

正しいサブパッケージをpackage/__init__.pyにインポートするだけで、subpackageとする必要があります。

import importlib 
import os 

if os.environ.get('MY_ENV_VAR', None): # Check your env condition here 
    pkg = '.subpackage1' 
else: 
    pkg = '.subpackage2' 
subpackage = importlib.import_module(pkg, __name__) 
+0

ありがとうございました。あなたの答えは正しいです。私は十分に私の質問で明確ではなかった:私はインポートのための正しいパスをまとめる必要があり、私は多くのif/else条件を持っていたくないので、特にこれを行うためにimportlibを使用したい。 – Maltimore

+0

@Maltimoreああ、そうだ。私は答えを変更しました、それがあなたのために今働くか調べてください。 – jdehesa

+0

ありがとう、それは動作します! – Maltimore

関連する問題