python - 从包中导入子包不工作?
我有以下这些文件:
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 个回答
2
对于Python 3,另外一个建议是:
# pack/__init__.py
from . import subpack
而且,正如之前提到的,如果声明了__all__
,那么这里要加上'subpack'
。
还有,别忘了,如果你不仅需要:
print subpack
而且还需要:
print subpack.mod2
那么你需要在pack/subpack/__init__.py
文件中做类似的操作。
2
试着在 pack/__init__.py
文件中添加 "import subpack"。
如果你有声明 __all__
,确保里面包含 'subpack'。
8
你需要在下面的位置添加一行代码:
__all__ = ["mod1", "subpack"]
这行代码要放在 pack/__init__.py
文件里。如果没有这一行,mod1
也不会被导入,所以我在想这到底是怎么回事。你可以参考一下 Guido的教程中相关的部分。