我的PATH中的DVCS Mercurial位于GNU / Linux系统中的Windows系统中。如果我在GNU / Linux中打开一个Bash shell,我可以执行hg(Mercurial命令),如果我在Windows中打开一个命令提示符,也是如此。
我想执行hg并检查退出状态并捕获输出。我知道子进程模块和check_output。但我无法使用我的PATH。我不想硬编码路径,因为只要你的路径上有Mercurial,我希望脚本能够正常工作。
非常感谢一个例子。
节日快乐!
答案 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
。
无需复制整个环境,但这可以防止您可能遇到的其他问题,因为缺少其他环境变量。