Я хотел бы использовать GitPython в следующем сценарии:
- Загрузите и извлеките портативный git (например, один из this )
- Используйте этот gitисполняемый файл для клонирования репозитория
Я хочу использовать переносной git, независимо от того, установлен ли git или нет (причина в этом ).
Я знаю, что могу указать исполняемый файл git, установив переменную окружения GIT_PYTHON_GIT_EXECUTABLE
, но
Я не нашел способа сделать это в Windows (setx
похоже, что что-то , но env
впоследствии не показывает такой переменной), кроме ручного редактирования системных переменных среды.
Это должно быть конечнойПользовательская программа, я не могу отправить инструкции типа «пожалуйста, установите переменную среды».
Путь известен только тогда, когда программа уже запущена.
Итак, мой вопрос, как я могу установить путь к исполняемому файлу вручную? время звонка? Следующее, похоже, не работает, оно печатает только git
и версию git моей системы:
import os
import sys
# Download and extract a portable git
git_dir = r"C:\Users\Florian\Downloads\mingit-busybox\cmd"
git_bin = os.path.join(git_dir, "git")
os.putenv("GIT_PYTHON_GIT_EXECUTABLE", git_bin)
os.environ.putenv("GIT_PYTHON_GIT_EXECUTABLE", git_bin)
# Attempt with VonC's Answer, making sure that it is first in PATH
sys.path = [git_dir] + sys.path
os.pathsep.join([git_dir]) + os.pathsep + os.environ["PATH"]
# Only import git now, because that's when the path is checked!
import git
g = git.Git()
print(g.GIT_PYTHON_GIT_EXECUTABLE)
print(".".join([str(v) for v in g.version_info]))
❯ python .\gitpython_test.py
git
2.23.0 # My portable git version is 2.20.1