python - 从包中导入子包不起作用?

时间:2011-02-04 21:09:28

标签: python import package

我有以下文件:

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

3 个答案:

答案 0 :(得分:8)

您需要添加

__all__ = ["mod1", "subpack"]

pack/__init__.py。没有这一行,mod1也不会被导入,所以我想知道那里发生了什么。另请参阅relevant section in Guido's tutorial

答案 1 :(得分:2)

尝试在pack/__init__.py

中添加“import subpack”

如果你声明__all__,请确保在那里出现'subpack'。

答案 2 :(得分:1)

Python 3的替代建议是:

# pack/__init__.py
from . import subpack

而且,正如已经提到的,如果声明了__all__,则在此处添加'subpack'

不要忘记,如果您不仅需要:

print subpack

而且:

print subpack.mod2

然后您需要在pack/subpack/__init.__py文件中进行类似的操作