$ PATH,sys.path和os.environ

时间:2018-07-11 14:48:29

标签: python-3.x

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

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

感谢您在“高级”中的解释。

2 个答案:

答案 0 :(得分:3)

这实际上比看起来要复杂。这个问题尚不清楚,如果您了解Linux / MacOS $ PATH环境变量。让我们从这里开始。 $ PATH变量(在Python中,您可以从os.environ中获得此变量)表示当前用户的$ PATH变量,该变量在各种BaSH配置文件和环境文件中定义。它通常包含“ / usr / bin”之类的内容以及其他安装程序的地方。例如,当您键入“ ls”时,解释器将在PATH中搜索名为“ ls”的程序。我在下面添加了其他阅读材料。

另一方面,

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

通常,如果您有未安装的源(即,在site-packages目录外部),则通常需要直接或通过PYTHONPATH来操作sys.path,以便解释器知道在哪里可以找到您的模块。另外,您也可以使用.pth文件来操纵模块搜索路径

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

来源

答案 1 :(得分:1)

sys.path

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

os.environ

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

环境变量PATH

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