NonePip install gitpython завершается неудачно с требованием python 3.x
Когда я пытаюсь установить gitpython через pip обычно под python 2.7, он не дает понять, что требуется python 3.x.
Этот конкретный сценарий / процесс работал до сегодняшнего утра.
$ sudo pip install gitpython
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting gitpython
Using cached https://www.piwheels.org/simple/gitpython/GitPython-2.1.12-py2.py3-none-any.whl
GitPython requires Python '>=3.0, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*' but the running Python is 2.7.16
Я использую Python 2.7.16
$ python --version
Python 2.7.16
Когда я проверяю текущую документацию, я вижу, что Python 2.7 или новее указан как требование. Что мне не хватает?
1 ответ
Оказывается, документация отстала, а поддержка Python 2.7 была прервана в dac619e.
Предполагая, что другие люди откладывают, как и я при переходе на Python 3, я создал форк GitPython, который актуален в версии 2.1.12 и отменяет только те изменения, которые устраняют заявленную совместимость для Python 2.7. Ожидается, что мой форк останется статичным с выпуском 0.2.12a, а в остальном даже с основной версией GitPython 2.1.12.
Я создал небольшой пакетный файл для людей, которые могут / должны захотеть автоматизировать процесс установки этого форка:
#!/bin/bash
gitpython() {
local cwd repo pipList found
pipList=$(pip list)
found=$(grep -o "GitPython" <<< "$pipList" | wc -l)
repo="https://github.com/lbussy/GitPython.git"
if [ "$found" -eq "0" ]; then
echo -e "\nDownloading and installing GitPython for Python 2.7."
cwd=$(pwd)
git clone "$repo" "$HOME/git-python" &>/dev/null || die "$@"
cd "$HOME/git-python" || die "$@"
eval "python setup.py install" &>/dev/null || die "$@"
cd "$cwd" || die "$@"
rm -fr "$HOME/git-python"
echo -e "\nGitPython for Python 2.7 install complete."
else
echo -e "\nGitPython for Python 2.7 already installed."
fi
}
function die
{
local message=$1
[ -z "$message" ] && message="Died"
echo "${BASH_SOURCE[1]}: line ${BASH_LINENO[0]}: ${FUNCNAME[1]}: $message." >&2
exit 1
}
main() {
gitpython "$@"
}
main "$?" && exit 0
Установленный таким образом, он все еще может управляться с помощью пипса, идущего вперед.