
subprocess.open难以识别git命令的原因
使用python的subprocess.open函数执行shell脚本时,遇到git命令执行失败(git: command not found),而npm命令却成功执行。修改git命令为绝对路径后,git命令执行成功。
原因分析:
git命令识别不到的原因是环境变量问题,而非python本身的问题。subprocess启动的程序并不会加载shell的配置文件,因此默认的环境变量将不包含git安装路径。
解决方案:
解决这一问题有两种方法:
方法1:添加软链接
在/usr/local/bin目录中添加git执行文件的软链接:
ln -s /path/to/git /usr/local/bin/git
这样一来,git将包含在path环境变量中,可以被程序轻松识别。
方法2:设置path环境变量
在脚本中设置path环境变量,将git执行文件的路径添加到变量中:
import os
# 获取当前环境变量
env = os.environ.copy()
# 添加Git执行路径到环境变量中
git_path = "/path/to/git"
env["PATH"] += f":{git_path}"
# 覆盖当前环境变量
os.environ.update(env)
# 执行脚本
cmd = "xxx.sh"
workdir = "/xxx/xxx/xxx"
with open('./out.log', 'a') as log:
    p = subprocess.Popen(cmd, shell=True, stdout=log, stderr=subprocess.STDOUT, cwd=workdir)以上就是为什么使用subprocess.open执行Git命令会报错“git: command not found”?的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号