从远程存储库中拉取时出现 GitPython 错误
GitPython error when pulling from remote repository
我正在尝试使用以下代码从本地仓库中的远程仓库中提取:
repo = git.Repo('/home/user/repo/')
o = repo.remotes.origin
try:
o.pull()
except:
logging.exception("oops:")
这悲惨地失败了,回溯如下:
Traceback (most recent call last):
File "/home/user/my_site/app/app.py", line 58, in regen_logs
o.pull()
File "/home/user/my_site/venv/lib/python2.7/site-packages/git/remote.py", line 665, in pull
proc = self.repo.git.pull(self, refspec, with_extended_output=True, as_process=True, v=True, **kwargs)
File "/home/user/my_site/venv/lib/python2.7/site-packages/git/cmd.py", line 440, in <lambda>
return lambda *args, **kwargs: self._call_process(name, *args, **kwargs)
File "/home/user/my_site/venv/lib/python2.7/site-packages/git/cmd.py", line 834, in _call_process
return self.execute(make_call(), **_kwargs)
File "/home/user/my_site/venv/lib/python2.7/site-packages/git/cmd.py", line 576, in execute
raise GitCommandNotFound(str(err))
GitCommandNotFound: [Errno 2] No such file or directory
但是,当在交互式会话中执行确切的三个命令(Repo
、设置原点、pull()
)时,它工作得很好:
>>> import git
>>> repo = git.Repo('/home/user/repo')
>>> o = repo.remotes.origin
>>> o.pull()
[<git.remote.FetchInfo object at 0x242d2b8>]
我确实在系统上安装了 Git:
$ rpm -q git
git-1.8.3.1-6.el7.x86_64
有什么线索是我做错了吗?
找到罪魁祸首。结果是我用来启动应用程序的 gunicorn 清除了大部分环境变量,并定义了一个指向虚拟环境目录的 PATH。因此,无法在任何地方找到 git
可执行文件。我通过使用额外选项调用 gunicorn 来修复此问题:
-e GIT_PYTHON_GIT_EXECUTABLE=/usr/bin/git
您需要在导入 git 之前将路径设置为 git,如下所示:
进口os
os.environ['GIT_PYTHON_GIT_EXECUTABLE'] = '/usr/local/bin/git'
从 git 导入 Repo
我正在尝试使用以下代码从本地仓库中的远程仓库中提取:
repo = git.Repo('/home/user/repo/')
o = repo.remotes.origin
try:
o.pull()
except:
logging.exception("oops:")
这悲惨地失败了,回溯如下:
Traceback (most recent call last):
File "/home/user/my_site/app/app.py", line 58, in regen_logs
o.pull()
File "/home/user/my_site/venv/lib/python2.7/site-packages/git/remote.py", line 665, in pull
proc = self.repo.git.pull(self, refspec, with_extended_output=True, as_process=True, v=True, **kwargs)
File "/home/user/my_site/venv/lib/python2.7/site-packages/git/cmd.py", line 440, in <lambda>
return lambda *args, **kwargs: self._call_process(name, *args, **kwargs)
File "/home/user/my_site/venv/lib/python2.7/site-packages/git/cmd.py", line 834, in _call_process
return self.execute(make_call(), **_kwargs)
File "/home/user/my_site/venv/lib/python2.7/site-packages/git/cmd.py", line 576, in execute
raise GitCommandNotFound(str(err))
GitCommandNotFound: [Errno 2] No such file or directory
但是,当在交互式会话中执行确切的三个命令(Repo
、设置原点、pull()
)时,它工作得很好:
>>> import git
>>> repo = git.Repo('/home/user/repo')
>>> o = repo.remotes.origin
>>> o.pull()
[<git.remote.FetchInfo object at 0x242d2b8>]
我确实在系统上安装了 Git:
$ rpm -q git
git-1.8.3.1-6.el7.x86_64
有什么线索是我做错了吗?
找到罪魁祸首。结果是我用来启动应用程序的 gunicorn 清除了大部分环境变量,并定义了一个指向虚拟环境目录的 PATH。因此,无法在任何地方找到 git
可执行文件。我通过使用额外选项调用 gunicorn 来修复此问题:
-e GIT_PYTHON_GIT_EXECUTABLE=/usr/bin/git
您需要在导入 git 之前将路径设置为 git,如下所示:
进口os
os.environ['GIT_PYTHON_GIT_EXECUTABLE'] = '/usr/local/bin/git'
从 git 导入 Repo