使用Python在PATH上执行命令

问题描述:

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

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

一个例子将不胜感激。

节日快乐!

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

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

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

此代码拷贝你从你的shell获取和环境覆盖PATH变量。如果您打算使用相同的env字典来运行其他命令,则可能需要追加到PATH

有没有必要复制整个环境,但这将防止其他问题发生,因为缺少其他环境变量。