Python-我们必须在Windows中目录的每一步中都有一个_init__u; py.py吗?
假设我们希望在Windows上使用Python-我们必须在Windows中目录的每一步中都有一个_init__u; py.py吗?,python,windows,import,directory,environment-variables,Python,Windows,Import,Directory,Environment Variables,假设我们希望在Windows上使用Python2.7运行命令,通过键入命令并点击Enter键从GUI运行,或者在Python文件上单击鼠标右键并选择Edit with IDLE,当IDLE在IDLE中弹出时,按F5 现在假设我们有一个简单的文件目录,比如C:\a\B\C\D,在文件夹D中,我们想要运行example.py。我们希望通过某种方式做到这一点,即: 通过右键单击打开它,然后选择“使用空闲编辑”,然后按F5或 通过提取每一行代码并在Python GUI上键入她 假设我们键入以下命令:
Python2.7
运行命令,通过键入命令并点击Enter键从GUI运行,或者在Python文件上单击鼠标右键并选择Edit with IDLE,当IDLE在IDLE中弹出时,按F5
现在假设我们有一个简单的文件目录,比如C:\a\B\C\D
,在文件夹D
中,我们想要运行example.py
。我们希望通过某种方式做到这一点,即:
- 通过右键单击打开它,然后选择“使用空闲编辑”,然后按F5或
- 通过提取每一行代码并在Python GUI上键入她
from C.D import example
请记住,C和D是文件夹
,在文件夹D
中我们有example.py
。我们还设置了环境变量:C:\A\B\C,以便Python
可以将文件夹D
视为一个模块,并在其中使用example.py
子模块进行操作
是否有必要在文件D之前的每个文件夹中都有一个\uuuu init\uuuuuuuuuuuuuuupy
如果文件A
或文件B
是否没有\uuu init\uuuuuuuuuuuupy
可以Python
(记住我们已经输入了环境变量)转到文件C
必须在目录中的每个文件夹中的每一步都有一个\uuuu init\uuuuuuuuuuuuuuuuupy
?您只需要将\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu init.py
添加到必须视为包的目录中。PYTHONPATH
搜索路径之外的任何文件夹都不是包,不需要有\uuuu init\uuuu.py
您也不需要在PYTHONPATH
上列出的顶级目录中使用\uuuu init\uuuu
,因为这不是一个包<代码>C
在这里不是一个包,它是模块搜索路径上的一个文件夹。不能从C
导入;只有D
是一个包
对于您的设置,如果模块搜索路径上有C:A\B\C
,则只能导入C
中的项目C:A\B\C\module.py
可作为module
导入,如果该目录中有\uu init\uuuu.py
文件,则C:A\B\C\D\
可导入
Python使用搜索路径查找您导入的顶级名称;如果尝试导入foo
,将逐个尝试搜索路径,每个路径都位于硬盘上的一个位置C:\A\B\C
就是这样一个位置,它将在该位置内查找,但该位置的目录名永远不会是搜索空间的一部分
有关详细信息,请参阅。您只需将
\uuuu init\uuuuuuupy
添加到必须视为包的目录中。PYTHONPATH
搜索路径之外的任何文件夹都不是包,不需要有\uuuu init\uuuu.py
您也不需要在PYTHONPATH
上列出的顶级目录中使用\uuuu init\uuuu
,因为这不是一个包<代码>C在这里不是一个包,它是模块搜索路径上的一个文件夹。不能从C
导入;只有D
是一个包
对于您的设置,如果模块搜索路径上有C:A\B\C
,则只能导入C
中的项目C:A\B\C\module.py
可作为module
导入,如果该目录中有\uu init\uuuu.py
文件,则C:A\B\C\D\
可导入
Python使用搜索路径查找您导入的顶级名称;如果尝试导入foo
,将逐个尝试搜索路径,每个路径都位于硬盘上的一个位置C:\A\B\C
就是这样一个位置,它将在该位置内查找,但该位置的目录名永远不会是搜索空间的一部分
有关更多信息,请参阅。Python的包行为在不同操作系统之间没有差异;不管这是不是Windows。我强调我们使用Windows是因为我在特定操作系统中测试代码行的方式,即在GUI上选择每一行并键入她,或者在空闲窗口中按F5。Python的包行为在不同的操作系统之间没有差异;这与Windows无关。我强调我们使用Windows是因为我在特定操作系统中测试代码行的方式,即在GUI上选择每行并键入代码,或者在空闲状态下按F5。如果C有
\uu init\uuuuuuuuuuuuuy.py
,为什么我不能导入它?@exoticbirdmerchant:因为它不在python中路径您需要将C:\A\B
添加到路径中,而不是C:\A\B\C
。既然一个文件夹位于PYTHONPATH搜索路径之外,我们该如何处理呢?我的意思是,一个目录就像一个链,为了让python进入文件夹C,它必须从B传递,它们共存。是吗?@ExoticBirdsMerchant:当您导入C
时,Python会查找C:\A\B\C\C
,因为这是查找顶级模块和包的地方之一。@ExoticBirdsMerchant:Python不会将搜索路径目录视为链。它只是硬盘上的一个位置。为什么我不能导入C,如果它有一个\uuu init\uuuu.py
?@ExoticBirdsMerchant:因为它不在python路径中;您需要将C:\A\B
添加到路径中,而不是C:\A\B\C
。既然一个文件夹位于PYTHONPATH搜索路径之外,我们该如何处理呢?我的意思是,一个目录就像一个链,为了让python进入文件夹C,它必须从B传递,它们共存。是吗?@ExoticBirdsMerchant:当您导入C
时,Python会查找C:\A\B\C\C
,因为这是查找顶级模块和包的地方之一。@ExoticBirdsMerchant:Python不会将搜索路径目录视为