gitpython не может найти команды git, несмотря на то, что git установлен

Я установил git python, подробности:

Python 3.8.1
git version 2.21.1 (Apple Git-122.3)
GitPython==3.1.0
gitdb==4.0.2
OS is Catalina
virtual environment via pyenv, pyenv-virtualenv, pyenv-virtualenvwrapper
git is located in /usr/bin/git

запуск этого кода:

from git import cmd
import sys

sys.path.append('/usr/bin/')
g = cmd.Git()
g.execute('git') # prints the git help page.
g.execute('git log') # Throws an error. 

g_ = cmd.Git('..')
g_.execute('git'). # prints the git help page.
g_.execute('git log'). # Throws an error. 

Ошибка:

GitCommandNotFound: Cmd('git') not found due to: FileNotFoundError('[Errno 2] No such file or directory: 'git log'')
cmdline: git log

На самом деле это ошибка из сторонней библиотеки. Я воспроизвел ошибку из этого кода с помощью более простого кода. исходный код вызывает git remote show origin, который также имеет аналогичную ошибку.


person Alesi Rowland    schedule 13.03.2020    source источник
comment
sys.path НЕ совпадает с os.environ['PATH']. sys.path — это проанализированная переменная среды PYTHONPATH, которая указывает, откуда импортировать пакеты Python, а не где искать исполняемые файлы. Каково ваше текущее значение os.environ['PATH']?   -  person Omer Tuchfeld    schedule 13.03.2020
comment
'/Users/alesi/.virtualenvs/scrape_horses/bin:/Users/alesi/.pyenv/versions/3.8.1/bin:/usr/local/Cellar/pyenv/1.2.16/libexec:/Users/alesi/. pyenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin при отладке по исключению.   -  person Alesi Rowland    schedule 13.03.2020


Ответы (1)


execute получает список аргументов командной строки, а не одну строку:

g.execute(['git', 'log']) #  Correct!
g.execute('git log') #  Wrong!
g.execute('git') #  Correct because only a single argument
person Omer Tuchfeld    schedule 13.03.2020
comment
Решена эта ошибка в стороннем коде, теперь перейдем к следующей ошибке в стороннем коде. - person Alesi Rowland; 13.03.2020