__init__.py 的目的是什么?

7
创建Python包时,我被告知要创建一个名为init.py的空文件。但我不明白为什么需要创建这个文件。因为distutils构建脚本不会修改它,所以即使五次构建后它仍然是空的。那它的目的是什么呢?

4
当你不明白某些东西时,你真的应该至少查看一下教程。它存在的理由就是为了帮助你理解。 - abarnert
3
这个教程是为了教你如何设置你的软件包以便与他人共享。它大体上假设你已经基本理解软件包的工作方式。 - Karl Knechtel
1
这里可能会导致误解的原因是“package”(包):Python 包是一个可以作为模块导入并包含其他模块的目录;这与导入有关,而不是打包。 - merwok
@ÉricAraujo:对于新手来说,同一个术语既用于“可作为模块导入的目录”,又用于“从PyPI等安装的东西,可能是模块、包或以上内容”,这有点令人困惑。 - abarnert
如果你想快速地笑一下,并看到这个问题的实际情况,请阅读这个聊天记录:http://chat.stackoverflow.com/rooms/6/conversation/nathan2055-packaging-noob - Nathan2055
显示剩余2条评论
1个回答

5
这是向Python发出的一个信号,告诉它该文件夹是一个包,而不仅仅是一个文件夹。它还包含初始化代码,当该包被引入到脚本中时会运行该代码。请参阅有关此主题的文档以获取更多信息。最相关的摘录如下:
“__init__.py”文件是必需的,以使Python将目录视为包含包;这样做是为了防止具有公共名称(例如“string”)的目录无意中隐藏后面在模块搜索路径上出现的有效模块。在最简单的情况下,“__init__.py”可以只是一个空文件,但它也可以执行包的初始化代码或设置稍后描述的“__all__”变量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接