代码之家  ›  专栏  ›  技术社区  ›  Ivan Shelonik

$path、sys.path和os.environ之间的差异

  •  3
  • Ivan Shelonik  · 技术社区  · 6 年前

    $path variable、sys.path和os.environ之间有什么区别?我知道它们都是python搜索包的路径。但最好能有更详细的答复。

    在ubuntu 16.04上导入之前,我只在os.environ中使用了这个脚本 I got ImportError: No module named XXX 是的。同时,在macos上运行良好。在ubuntu上添加sys.path之后,我可以很好地获得导入模块。

    谢谢你事先的解释。

    2 回复  |  直到 6 年前
        1
  •  3
  •   sehafoc    6 年前

    这实际上比看上去更复杂。如果您理解linux/macos$path环境变量,这个问题就不清楚了。我们从那开始。$path变量(在python中,可以从os.environ获得)表示当前用户$path变量,如在各种bash概要文件和环境文件中定义的那样。它通常包含“/usr/bin”和其他安装程序的地方。例如,当您键入“ls”时,解释器将在路径中搜索名为“ls”的程序。我在下面附加了一些阅读材料。

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

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

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

    来源

        2
  •  1
  •   himank    6 年前

    搜索路径

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

    操作系统环境

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

    环境变量路径

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