Python 3.x $PATH、sys.PATH和os.environ之间的差异

Python 3.x $PATH、sys.PATH和os.environ之间的差异,python-3.x,Python 3.x,$PATH变量sys.PATH和os.environ之间有什么区别?我知道它们都是python搜索包的路径。但如果能有更详细的回答就好了 我实践中的一个工作案例是,在Ubuntu 16.04导入之前,我只在os.environ上使用了这个脚本,我得到了ImportError:没有名为XXX的模块。同时,在MacOS上,它运行良好。在我在Ubuntu上添加sys.path之后,我可以很好地获得导入模块 谢谢你事先的解释。这实际上比看起来更复杂。这个问题不清楚您是否理解Linux/MacOS$PAT

$PATH变量sys.PATH和os.environ之间有什么区别?我知道它们都是python搜索包的路径。但如果能有更详细的回答就好了

我实践中的一个工作案例是,在Ubuntu 16.04
导入之前,我只在os.environ上使用了这个脚本,我得到了ImportError:没有名为XXX的模块。同时,在MacOS上,它运行良好。在我在Ubuntu上添加sys.path之后,我可以很好地获得导入模块


谢谢你事先的解释。

这实际上比看起来更复杂。这个问题不清楚您是否理解Linux/MacOS$PATH环境变量。让我们从这里开始。$PATH变量(在Python中,您可以从os.environ访问系统环境变量)表示当前用户$PATH变量,该变量在各种shell概要文件和环境文件中定义。它通常包含“/usr/bin”和其他安装程序的位置。例如,当您在系统shell中键入“ls”时,底层系统将在$PATH中搜索名为“ls”的程序。因此,实际执行的可能是“/usr/bin/ls”之类的内容,我在下面添加了其他阅读内容

另一方面,sys.path是在解释器启动时由Python根据许多事情构造的。帮助页面中的第一句话如下。指定模块搜索路径的字符串列表。由环境变量$PYTHONPATH初始化,加上依赖于安装的默认值。依赖于安装的部分通常定义Python站点包的安装位置$PYTHONPATH是另一个环境变量(如$PATH),可以添加它以方便模块搜索位置,并且可以使用与系统$PATH相同的方式进行设置

通常,如果您有未安装的源代码(即希望在site packages目录外运行的Python文件),则通常需要直接在脚本中操作sys.path,或将位置添加到$PYTHONPATH环境变量中,以便解释器知道在何处查找模块。或者,您也可以使用.pth文件来操作模块搜索路径

这只是一个基本的概述,我希望您阅读文档以更好地理解

来源


系统路径

是指定模块搜索路径的字符串列表。从环境变量PYTHONPATH初始化,加上依赖于安装的默认值

os.environ

是表示字符串环境的映射对象。例如,environ['HOME']是(在某些平台上)主目录的路径名,相当于C中的getenv(“HOME”)

环境变量路径

指定可执行程序所在的一组目录。通常,每个执行进程或用户会话都有自己的路径设置