我有以下文件:
pack/__init__.py
pack/subpack/__init.__py
pack/subpack/mod2.py
以下代码在最后一行失败:
from pack import * #should import everything
print subpack #NameError: name 'subpack' is not defined
我希望导入子包 - 为什么会有差异,我该如何克服它? 重要事项:“克服”我的意思是能够引用subpack
而无需一直写pack.subpack
。
答案 0 :(得分:8)
您需要添加
__all__ = ["mod1", "subpack"]
到pack/__init__.py
。没有这一行,mod1
也不会被导入,所以我想知道那里发生了什么。另请参阅relevant section in Guido's tutorial。
答案 1 :(得分:2)
尝试在pack/__init__.py
如果你声明__all__
,请确保在那里出现'subpack'。
答案 2 :(得分:1)
Python 3的替代建议是:
# pack/__init__.py
from . import subpack
而且,正如已经提到的,如果声明了__all__
,则在此处添加'subpack'
。
不要忘记,如果您不仅需要:
print subpack
而且:
print subpack.mod2
然后您需要在pack/subpack/__init.__py
文件中进行类似的操作