用Python包将子包中的类导入主命名空间
我正在尝试把我的代码整理成一个合适的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 个回答
1
如果Py6S的 __init__.py
文件里有 from Params import *
这行代码:
import Params
__all__ = ["Params"]
from Params import *
__all__ += Params.__all__
那么你需要这样做:
把这些内容添加到Py6S的 __all__
里面。