我有一个带有子包装的包装。导入程序包时,我想动态地将其中一个子程序包用作固定名称。我该怎么做呢?

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


从外部,我希望能够执行from package import subpackage,并且包中的__init__.py根据环境变量将正确的子包(1或2)用作package.subpackage。

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

最佳答案

您只需要在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__)

关于python - 使用importlib提升python子包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44163408/

10-13 00:53