【问题标题】:Execute a command on the PATH using Python使用 Python 在 PATH 上执行命令
【发布时间】:2011-12-22 13:15:03
【问题描述】:

我在 Windows 系统和 GNU/Linux 系统中的 PATH 上都有 DVCS Mercurial。如果我在 GNU/Linux 中打开 Bash shell,我可以执行 hg(Mercurial 命令),如果我在 Windows 中打开命令提示符也是如此。

我想执行 hg 并检查退出状态并捕获输出。我知道 subprocess 模块和 check_output。但我无法让它使用我的 PATH。我不希望对路径进行硬编码,因为只要路径上有 Mercurial,我希望脚本能够正常工作。

一个例子将不胜感激。

节日快乐!

【问题讨论】:

    标签: python python-2.7 subprocess


    【解决方案1】:

    如果您的路径中已经有hg,则在调用subprocess 时不需要任何特殊内容,因为您应该获得相同的环境。

    无论如何,如果你想显式地为你的子进程添加一个 PATH 环境变量,你可以这样做:

    env = os.environ.copy()
    env['PATH'] = <whatever you need here>
    subprocess.Popen(<hg command>, env=env)
    

    此代码复制您从 shell 获取的环境并覆盖 PATH 变量。如果您要使用相同的 env 字典来运行其他命令,您可能希望追加到 PATH

    无需复制整个环境,但这将防止您因缺少其他环境变量而可能遇到的其他问题。

    【讨论】:

      猜你喜欢
      • 2017-08-04
      • 2020-05-05
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-04
      • 2014-04-29
      • 1970-01-01
      相关资源
      最近更新 更多