Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[GitPython >= 2.1.4] Can't import without git CLI #657

Closed
@terminalmage

Description

@terminalmage

Description of Problem

Since GitPython 2.1.4, the initialimport git fails because it invokes the git CLI, raising agit.exc.GitCommandNotFound error. However, due to the chicken-and-egg nature of this import, it is impossible for one to catch agit.exc.GitCommandNotFound error.

Steps to Reproduce

Install GitPython >= 2.1.4 on a box without git installed on it. An easy way to do this is to launch a Cent 7 docker container (which does not come with git installed off the base image), and then install GitPython (first installing EPEL repo and pip for ease of installation).

% docker run --rm -it centos:7 bash[root@c1c079f693dc /]# yum --quiet -y install epel-releasewarning: /var/cache/yum/x86_64/7/extras/packages/epel-release-7-9.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEYPublic key for epel-release-7-9.noarch.rpm is not installedImporting GPG key 0xF4A80EB5: Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>" Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 Package    : centos-release-7-3.1611.el7.centos.x86_64 (@CentOS) From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7[root@c1c079f693dc /]# yum --quiet -y install python-pipwarning: /var/cache/yum/x86_64/7/epel/packages/python2-pip-8.1.2-5.el7.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEYPublic key for python2-pip-8.1.2-5.el7.noarch.rpm is not installedImporting GPG key 0x352C64E5: Userid     : "Fedora EPEL (7) <epel@fedoraproject.org>" Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5 Package    : epel-release-7-9.noarch (@extras) From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7[root@c1c079f693dc /]# command -v git && echo git is installed || echo git is not installedgit is not installedroot@c1c079f693dc /]# pip install GitPythonCollecting GitPython  Downloading GitPython-2.1.5-py2.py3-none-any.whl (443kB)    100% |################################| 450kB 1.0MB/sCollecting gitdb2>=2.0.0 (from GitPython)  Downloading gitdb2-2.0.2-py2.py3-none-any.whl (63kB)    100% |################################| 71kB 2.1MB/sCollecting smmap2>=2.0.0 (from gitdb2>=2.0.0->GitPython)  Downloading smmap2-2.0.3-py2.py3-none-any.whlInstalling collected packages: smmap2, gitdb2, GitPythonSuccessfully installed GitPython-2.1.5 gitdb2-2.0.2 smmap2-2.0.3You are using pip version 8.1.2, however version 9.0.1 is available.You should consider upgrading via the 'pip install --upgrade pip' command.

Now attempt to import:

[root@c1c079f693dc /]# python -c 'import git'Traceback (most recent call last):  File "<string>", line 1, in <module>  File "/usr/lib/python2.7/site-packages/git/__init__.py", line 45, in <module>    from git.repo import Repo               # @NoMove @IgnorePep8  File "/usr/lib/python2.7/site-packages/git/repo/__init__.py", line 4, in <module>    from .base import *  File "/usr/lib/python2.7/site-packages/git/repo/base.py", line 31, in <module>    from git.remote import Remote, add_progress, to_progress_instance  File "/usr/lib/python2.7/site-packages/git/remote.py", line 190, in <module>    class FetchInfo(object):  File "/usr/lib/python2.7/site-packages/git/remote.py", line 219, in FetchInfo    v = Git().version_info[:2]  File "/usr/lib/python2.7/site-packages/git/cmd.py", line 461, in version_info    return self._version_info  File "/usr/lib/python2.7/site-packages/git/cmd.py", line 424, in __getattr__    return LazyMixin.__getattr__(self, name)  File "/usr/lib/python2.7/site-packages/gitdb/util.py", line 256, in __getattr__    self._set_cache_(attr)  File "/usr/lib/python2.7/site-packages/git/cmd.py", line 444, in _set_cache_    version_numbers = self._call_process('version').split(' ')[2]  File "/usr/lib/python2.7/site-packages/git/cmd.py", line 877, in _call_process    return self.execute(call, **exec_kwargs)  File "/usr/lib/python2.7/site-packages/git/cmd.py", line 602, in execute    raise GitCommandNotFound(command, err)git.exc.GitCommandNotFound: Cmd('git') not found due to: OSError('[Errno 2] No such file or directory')  cmdline: git version

If you then downgrade to before version 2.1.4, the import works fine since the initial import no longer seems to be trying to invoke the git CLI:

[root@c1c079f693dc /]# pip install 'GitPython<2.1.4'Collecting GitPython<2.1.4  Downloading GitPython-2.1.3-py2.py3-none-any.whl (442kB)    100% |################################| 450kB 993kB/sRequirement already satisfied (use --upgrade to upgrade): gitdb2>=2.0.0 in /usr/lib/python2.7/site-packages (from GitPython<2.1.4)Requirement already satisfied (use --upgrade to upgrade): smmap2>=2.0.0 in /usr/lib/python2.7/site-packages (from gitdb2>=2.0.0->GitPython<2.1.4)Installing collected packages: GitPython  Found existing installation: GitPython 2.1.5    Uninstalling GitPython-2.1.5:      Successfully uninstalled GitPython-2.1.5Successfully installed GitPython-2.1.3You are using pip version 8.1.2, however version 9.0.1 is available.You should consider upgrading via the 'pip install --upgrade pip' command.[root@c1c079f693dc /]# python -c 'import git'[root@c1c079f693dc /]#

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp