Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python路径说明:从子包导入_Python_Python 2.7_Path_Pythonpath - Fatal编程技术网

Python路径说明:从子包导入

Python路径说明:从子包导入,python,python-2.7,path,pythonpath,Python,Python 2.7,Path,Pythonpath,这个问题是一个我无法向自己解释的行为细节 src/package/_init__.py为空但存在 src/package/subpackage/__init__u;.py: src/package/test/test.py: 从src:python-package/test/test.py调用失败,没有名为subpackage的模块。请注意,导入包也不起作用 注意:从src运行解释器并键入import语句非常有效 我应该理解我不应该调用包的子文件吗?在我的项目中,它是一个测试文件,所以它对我来说

这个问题是一个我无法向自己解释的行为细节

src/package/_init__.py为空但存在

src/package/subpackage/__init__u;.py:

src/package/test/test.py:

从src:python-package/test/test.py调用失败,没有名为subpackage的模块。请注意,导入包也不起作用

注意:从src运行解释器并键入import语句非常有效

我应该理解我不应该调用包的子文件吗?在我的项目中,它是一个测试文件,所以它对我来说是合乎逻辑的

为什么当前工作目录不在导入路径中

非常感谢阅读和回答的人。

在python包/test/test.py中失败,它也从src运行:

从src启动intepreter时,位于sys.path中,因此可以找到src的路径; 从src运行python package/test/test.py时,sys.path中缺少,尽管os.path.abspath'.'显示当前目录为\\src,\\src不在sys.path中,而\\src\\package\\test在sys.path中。也就是说,python将文件的路径添加到sys.path,而不是运行脚本的路径。 见:

当程序启动时初始化时,此列表的第一项路径[0]是包含用于调用Python解释器的脚本的目录。如果脚本目录不可用,例如,如果以交互方式调用解释器或从标准输入读取脚本,则路径[0]为空字符串,它将指示Python首先搜索当前目录中的模块。请注意,脚本目录是在作为PYTHONPATH结果插入的条目之前插入的。

在python包/test/test.py上失败,它也是从src运行的:

从src启动intepreter时,位于sys.path中,因此可以找到src的路径; 从src运行python package/test/test.py时,sys.path中缺少,尽管os.path.abspath'.'显示当前目录为\\src,\\src不在sys.path中,而\\src\\package\\test在sys.path中。也就是说,python将文件的路径添加到sys.path,而不是运行脚本的路径。 见:


当程序启动时初始化时,此列表的第一项路径[0]是包含用于调用Python解释器的脚本的目录。如果脚本目录不可用,例如,如果以交互方式调用解释器或从标准输入读取脚本,则路径[0]为空字符串,它将指示Python首先搜索当前目录中的模块。请注意,脚本目录是在作为PYTHONPATH结果插入的条目之前插入的。

,因为您的包不在$PYTHONPATH中。如果您想知道如何调用test.py,可以将test.py文件移动到src/目录,或者将src添加到$PYTHONPATH

PYTHONPATH="/path/to/src:$PYTHONPATH"
export PYTHONPATH
从文件

导入名为spam的模块时,解释器首先搜索具有该名称的内置模块。如果未找到,它将在变量sys.path给定的目录列表中搜索名为spam.py的文件

输出如下

['.', '/usr/bin', ...

这意味着当前目录也在sys.path中。如果要导入模块,请确保模块路径在sys.path中,方法是将包目录添加到环境变量PYTHONPATH,或将当前目录或脚本目录更改为包目录。

因为包不在$PYTHONPATH中。如果您想知道如何调用test.py,可以将test.py文件移动到src/目录,或者将src添加到$PYTHONPATH

PYTHONPATH="/path/to/src:$PYTHONPATH"
export PYTHONPATH
从文件

导入名为spam的模块时,解释器首先搜索具有该名称的内置模块。如果未找到,它将在变量sys.path给定的目录列表中搜索名为spam.py的文件

输出如下

['.', '/usr/bin', ...

这意味着当前目录也在sys.path中。如果要导入模块,请将包目录添加到环境变量PYTHONPATH中,确保模块路径位于sys.path中,或者将当前目录或脚本目录更改为包目录。

包目录和子包目录是否包含一个名为_init__.py的文件?包目录和子包目录是否包含一个名为_init__.py的文件?否,请阅读问题:python package/test/test.py失败,它也是从src.No运行的,阅读问题:python包/test/test.py失败,它也是从src运行的。我试过它确实有效,但是你能告诉我为什么吗?当前工作目录应该在路径中,不是吗?@AsTeR编辑的答案。所以我所做的应该是工作的?根据您所说的,从src运行命令应该使包可见。@AsTeR sys.path从以下位置初始化:1包含输入脚本的目录或当前目录。。。从您的输入脚本是在packag
e/测试/我试过它确实有效,但你能告诉我为什么吗?当前工作目录应该在路径中,不是吗?@AsTeR编辑的答案。所以我所做的应该是工作的?根据您所说的,从src运行命令应该使包可见。@AsTeR sys.path从以下位置初始化:1包含输入脚本的目录或当前目录。。。从您的输入脚本开始,脚本位于包/测试中/
['.', '/usr/bin', ...