Python脚本中执行git pull失败的问题求助及解决方案咨询
Python脚本中执行git pull失败的问题求助及解决方案咨询
各位大佬好,我遇到一个棘手的问题,想请教下大家:
我在Windows Server 2022上用Python 3.6.8写了一个Flask应用,当接口收到HTTP请求时,需要在指定的Git仓库里执行git pull origin main操作。奇怪的是,像git status这类命令用subprocess调用都正常,但git pull就是跑不起来,完全没有输出,还会抛出错误:
[WinError 6] The handle is invalid
我最初的代码是这样的:
import subprocess subprocess.check_output( ['git', 'pull', 'origin', 'main'] )
后来我尝试切换工作目录,不管是用os.chdir还是给subprocess传cwd参数,结果都不对:
import os import subprocess os.chdir(my_repository_dir) subprocess.check_output( ['git', 'pull', 'origin', 'main'], cwd=my_repository_dir )
我把subprocess的几个方法(check_output、check_call、run、Popen)都试了一遍,加shell=True和不加的情况也都测试过,全都没用。甚至还试了GitPython模块,依然解决不了问题。
补充几个关键信息:
- 目标目录确实是有效的Git仓库
- GitLab那边已经配置好了SSH密钥
- Windows凭据管理器里也存储了对应的账号凭据
现在我有点懵,难道git pull本来就不适合从脚本里调用吗?如果是这样的话,有没有正确的方式在Python脚本里实现拉取仓库代码的操作?麻烦各位大佬指点迷津!
备注:内容来源于stack exchange,提问作者user19640837
相关产品推荐
相关产品推荐

