使用Python在PATH上执行命令

时间:2011-12-22 13:15:04

标签: python python-2.7 subprocess

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

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

非常感谢一个例子。

节日快乐!

1 个答案:

答案 0 :(得分:2)

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

无论如何,如果要向子进程显式添加PATH环境变量,可以这样做:

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

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

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