【问题标题】:sys.path vs. $PATHsys.path 与 $PATH
【发布时间】:2014-08-16 23:09:36
【问题描述】:

我想从 python 程序中访问 $PATH 变量。到目前为止,我的理解是 sys.path 给出了 Python 模块搜索路径,但我想要的是 $PATH 环境变量。有没有办法从 Python 中访问它?

为了提供更多背景知识,我最终想要做的是找出用户安装 Package_X/ 的位置,以便我可以在 Package_X/ 中找到 html 文件的绝对路径。如果这是一种不好的做法,或者如果有更好的方法来实现这一点,我将不胜感激任何建议。谢谢!

【问题讨论】:

  • “包”是什么意思?它是一个python模块吗?还是特定发行版的发行包?根据您正在寻找的内容,可能已经有现有的解决方案。在最一般的情况下,$PATH 可能不是很有帮助。

标签: python bash filesystems sys


【解决方案1】:

您可以读取访问os.environdictionary 的环境变量

import os

my_path = os.environ['PATH']

关于查找某个Package的安装位置,看是否安装在PATH中

【讨论】:

    【解决方案2】:

    sys.pathPATH 是两个完全不同的变量。 PATH 环境变量指定你的 shell(或者更准确地说,操作系统的 exec() 系列系统调用)在哪里寻找二进制文件,而 sys.path 是一个 Python 内部变量,它指定 Python 在哪里寻找可安装的模块.

    环境变量PYTHONPATH可以用来影响sys.path的值,如果你在启动Python之前设置了它。

    相反,os.environ['PATH'] 可用于在 Python 中检查 PATH 的值(或任何环境变量,实际上;只需将其名称放在引号内而不是 PATH)。

    【讨论】:

    【解决方案3】:

    要检查某个模块是否已安装,您可以简单地尝试导入它:

    try:
        import someModule
    except ImportError, e:
        pass # not installed
    

    为了在导入后检查其路径,您可以通过someModule.__path__ 访问其__path__ 属性:

    包支持另一种特殊属性__path__。这是 初始化为包含目录名称的列表 包的__init__.py 在该文件中的代码被执行之前。

    关于从Python 中访问环境变量,您可以执行以下操作:

    import os
    os.environ['PATH']
    

    【讨论】:

      猜你喜欢
      • 2014-06-06
      • 1970-01-01
      • 2010-12-26
      • 2021-10-12
      • 2014-06-27
      • 2015-09-26
      • 1970-01-01
      • 2018-11-29
      • 2018-07-20
      相关资源
      最近更新 更多