使用Python包将子包中的类导入主命名空间

时间:2011-06-26 09:55:57

标签: python packages

我试图将我的代码库重新组织成一个适当的Python包(带有子包),准备好上传到PyPI。我有以下目录(用于测试):

Py6S/
    __init__.py
    test.py
    Params/
          __init__.py
          AeroModel.py

AeroModel.py包含:

class AeroModel:
    NO_AEROSOL=0
    CONTINENTAL=1
    MARITIME=2
    URBAN=3
    USER=4
    DESERT=5
    BIOMASS_BURNING=6
    STRATOSPHERIC=7

Py6S init .py包含:

__all__ = ["Params"]

Params init .py包含:

__all__ = ["AtmosModel", "AeroModel", "AtmosCorr"]

然而,当我from Py6S import *时,我可以参考Params,但不能参考AtmosModel或AeroModel。

我希望能够输入from Py6S import *并使用所有AeroModel,AtmosModel,AtmosCorr等,而无需在其前面放置任何模块名称。

1 个答案:

答案 0 :(得分:1)

如果Py6S的__init__.pyfrom Params import *: 你需要这样做:

import Params
__all__ = ["Params"]
from Params import *
__all__ += Params.__all__

将这些添加到Py6S的__all__