Python-在Windows中,目录的每一步都必须有一个__init__.py吗



假设我们希望在带有Python 2.7的Windows上,通过键入并点击Enter从GUI运行命令,或者右键单击Python文件并选择Edit with IDLE,当IDLE在IDLE内弹出时,按F5

现在假设我们有一个简单的文件目录,如C:ABCD,并且在folder D中,我们希望运行example.py。我们想通过某种方式来做到这一点,即:

  • 用鼠标右键打开它,然后选择用IDLE编辑,然后按F5
  • 通过拿起每一行代码并在Python GUI上键入她

假设我们键入命令:

from C.D import example

请记住,C and D are foldersfolder D内部有example.py。我们还在PYTHONPATH中设置了环境变量C:ABC;,以便Python可以将folder D视为一个模块,并在其内部与example.py子模块一起操作。

是否有必要在文件D之前的每个文件夹中都有一个__init__.py

如果file Afile B是否有__init__.pyPython(记住我们已经键入了环境变量(是否可以转到file C

是否必须在目录中每个文件夹中的(又名(的每一步中都有__init__.py

您只需要将__init__.py添加到必须作为包处理的目录中。PYTHONPATH搜索路径之外的任何文件夹都是never包,并且不需要__init__.py

PYTHONPATH上列出的顶级目录中也不需要__init__,因为它不是一个包。C在这里不是一个包,它是模块搜索路径上的一个文件夹。不能从C导入;只有CCD_ 26是一个封装。

对于您的设置,如果C:ABC在模块搜索路径上,则只能导入C中的项。C:ABCmodule.py可作为module导入,如果该目录中有__init__.py文件,则C:ABCD可作为import D导入。

Python使用搜索路径来查找您导入的顶级名称;如果您尝试导入foo,则会逐个尝试搜索路径,每个路径都是硬盘上的一个位置。C:ABC就是这样一个位置,它会在中查找,但该位置的目录名从来都不是搜索空间的一部分。

有关详细信息,请参阅Python包教程。

相关内容

最新更新