【问题标题】: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。
无需复制整个环境,但这将防止您因缺少其他环境变量而可能遇到的其他问题。