使用importlib提升python子包

时间:2017-05-24 16:02:15

标签: python

我有一个带有子包的包。导入包时,我想动态地将其中一个子包作为固定名称提供。我该怎么做?

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

从外部我希望能够from package import subpackage,并且包中的__init__.py使得正确的子包(1或2)可用作package.subpackage,具体取决于环境变量。< / p>

编辑:我特别想使用importlib.import_module()来执行此操作,因为我需要将一个字符串放在一起,该字符串提供子包的路径。

1 个答案:

答案 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__)