使用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
。
有没有必要复制整个环境,但这将防止其他问题发生,因为缺少其他环境变量。