我在Python中构建包时,可能缺少一些非常基础的东西。当我按照https://docs.python.org/2/tutorial/modules.html#packages的指南创建一个包并导入它时,Python找不到任何模块。例如,假设我创建了以下结构的包holygrail:
如果我尝试使用
我尝试添加以下行:
在__init__.py文件中进行了更改,但这并没有改变行为。
如何构建一个包,使得
- holygrail/
- __init__.py
- knights.py
我将__init__.py保持为空,因为文档说可以这样做,而我只是想创建一个基本的包开始使用。在knights.py中,我有如下代码:
def say():
print 'Ni!'
如果我尝试使用
import holygrail
,Python不会报错,但是holygrail.knights.say()
会导致Python告诉我"'module' object [holygrail] has no attribute 'knights'." 但是,如果我通过from holygrail import knights
特别导入骑士,那么knights.say()
就可以使用了。此外,holygrail.knights.say()
也可以正常工作。我尝试添加以下行:
__all__ = ['knights']
在__init__.py文件中进行了更改,但这并没有改变行为。
如何构建一个包,使得
import package
可以加载所有模块,从而允许像package.module.function()
这样的语句?
import knights
。 - Padraic Cunningham