2011-02-04 47 views
2

我有以下文件: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

回答

8

您需要

__all__ = ["mod1", "subpack"] 

添加到pack/__init__.py。沒有這條線,mod1也不會被導入,所以我不知道那裏正在發生什麼。另請參閱relevant section in Guido's tutorial

+0

這個問題沒有說'從子包導入*`做什麼。它只是說你想從`pack import *`中做``並且引用'subpack`而不是`pack.subpack`(這可以通過`from pack import subpack`輕鬆完成)。 – Velociraptors 2011-02-04 21:32:35

2

嘗試增加「子套件進口」在pack/__init__.py

如果你有__all__聲明,確認「子套件」在那裏出現。