Python为什么需要在包中使用<code>init.py</code>文件?

20 浏览
0 Comments

Python为什么需要在包中使用<code>init.py</code>文件?

这个问题已经有了答案

__init__.py是用来干什么的?

我理解Python需要__init__.py文件才能识别目录作为Python包,这样我们就可以将子模块导入到我们的程序中。我可以看到与类的相似之处,以及init如何用于立即执行必要的代码。

然而,在Python文档中,这行代码让我感到困惑,

这是为了防止具有共同名称(例如string)的目录无意中隐藏在后面的模块搜索路径中出现的有效模块。

如此看来,https://docs.python.org/2/tutorial/modules.html#packages

请有人能澄清一下吗?

admin 更改状态以发布 2023年5月23日
0
0 Comments

如果您有一个名为string的目录,它不是一个包,在Python搜索模块和包的位置(例如当前工作目录)中,当您执行import string时,Python不应该尝试导入它。 __init__.py的要求让Python知道它应该继续前进,而不是将该目录视为一个包。

0
0 Comments

文档已经非常明确了 - 您的项目结构可能如下所示:

app
 - common
  - init.py
 - resources
 - string
 - src

如果Python隐式地将目录视为包,"string"目录可能会与Python内置的字符串模块 (https://docs.python.org/2/library/string.html) 发生名称冲突。这意味着在调用import string时,该模块是不明确的。

__init__.py也添加了一些功能:在初始化包时执行代码,因此可用于进行某些类型的包设置。

0