python-3.x $PATH、sys.path和os.environ之间的区别

fkvaft9z  于 2023-02-06  发布在  Python
关注(0)|答案(2)|浏览(216)

变量$PATHsys.pathos.environ有什么区别?我知道它们都是python搜索包的路径,但是如果有更详细的响应就更好了。
我实践中的一个案例是,在Ubuntu 16.04上导入之前,我使用的脚本只有os.environ,我得到了ImportError: No module named XXX。同时,在MacOS上它运行良好。在Ubuntu上添加sys.path后,我可以很好地得到导入模块。

owfi6suc

owfi6suc1#

这实际上比看起来要复杂得多。如果你理解Linux/MacOS $PATH环境变量,这个问题就不清楚了。让我们从那里开始。$PATH变量(在Python中,你可以从os.environ访问系统环境变量)表示当前用户在各种shell配置文件和环境文件中定义的$PATH变量。和其他安装程序的地方。例如,当你在系统shell中输入"ls"时,底层系统会在$PATH中搜索名为"ls"的程序。因此,实际执行的可能是类似于"/usr/bin/ls "的内容。
另一方面,sys.path是在解释器启动时由Python基于许多事情构造的。帮助页面中的第一句话如下:"指定模块搜索路径的字符串列表。从环境变量$PYTHONPATH初始化,加上安装相关的默认值。"安装相关的部分通常定义Python站点包的安装位置。$PYTHONPATH是另一个环境变量(类似于$PATH),可以添加它以方便模块搜索位置,并且可以使用与系统$PATH相同的方式进行设置
通常,如果你有未安装的源代码(即你有Python文件,你想在site-packages目录之外运行),你通常需要直接在脚本中操作sys.path,或者将位置添加到$PYTHONPATH环境变量中,这样解释器就知道在哪里可以找到你的模块。
这只是一个基本的概述,我希望你阅读文档更好地理解
来源

zysjyyx4

zysjyyx42#

系统路径

指定模块搜索路径的字符串列表。从环境变量PYTHONPATH加上一个与安装相关的默认值初始化。

外部环境

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

环境变量PATH

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

相关问题