$ PATH,sys.path和os.environ之间的区别

Iva*_*nik 5 python-3.x

$ PATH变量sys.path和os.environ有什么区别?我知道它们都充当python搜索软件包的路径。但是,做出更详尽的回应会很好。

从我的实践中得出的一个可行的例子是,在Ubuntu 16.04上导入之前,我仅将脚本与os.environ一起使用I got ImportError: No module named XXX。同时在MacOS上运行良好。在Ubuntu上添加sys.path之后,我可以很好地导入模块。

感谢您在Advance中的解释。

seh*_*foc 11

这实际上比看起来更复杂。如果您了解 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 文件来操作模块搜索路径

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

来源


小智 5

系统路径

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

操作系统环境

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

环境变量路径

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