Python路径说明:从子包导入
这个问题是一个我无法向自己解释的行为细节 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,而不是运行脚本的路径。 见: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语句非常有效 我应该理解我不应该调用包的子文件吗?在我的项目中,它是一个测试文件,所以它对我来说
当程序启动时初始化时,此列表的第一项路径[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', ...