我有一个带有子包的包。导入包时,我想动态地将其中一个子包作为固定名称提供。我该怎么做?
/package
__init__.py
/subpackage1
__init__.py
/subpackage2
__init__.py
从外部我希望能够from package import subpackage
,并且包中的__init__.py
使得正确的子包(1或2)可用作package.subpackage,具体取决于环境变量。< / p>
编辑:我特别想使用importlib.import_module()
来执行此操作,因为我需要将一个字符串放在一起,该字符串提供子包的路径。
答案 0 :(得分: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__)