2017-05-24 25 views
1

我有一個帶有子包的包。導入包時,我想動態地將其中一個子包作爲固定名稱提供。我該怎麼做呢?用importlib提升python子包裝

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

從我想能夠做到from package import subpackage外部,並且在包__init__.py使得正確子包(1或2)可作爲package.subpackage取決於環境變量。

編輯:我特別想用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

謝謝。你的回答是正確的。我的問題還不夠清楚:我特別想使用importlib來做到這一點,因爲我需要爲import導入正確的路徑,並且我不想要很多if/else條件。 – Maltimore

+0

@Maltimore啊,我明白了。我已經改變了答案,現在檢查它是否適用於您。 – jdehesa

+0

謝謝,這工作! – Maltimore