GitPython: установить исполняемый файл git во время выполнения - PullRequest
1 голос
/ 27 октября 2019

Я хотел бы использовать GitPython в следующем сценарии:

  • Загрузите и извлеките портативный git (например, один из this )
  • Используйте этот gitисполняемый файл для клонирования репозитория

Я хочу использовать переносной git, независимо от того, установлен ли git или нет (причина в этом ).


Я знаю, что могу указать исполняемый файл git, установив переменную окружения GIT_PYTHON_GIT_EXECUTABLE, но

  1. Я не нашел способа сделать это в Windows (setxпохоже, что что-то , но env впоследствии не показывает такой переменной), кроме ручного редактирования системных переменных среды.

  2. Это должно быть конечнойПользовательская программа, я не могу отправить инструкции типа «пожалуйста, установите переменную среды».

  3. Путь известен только тогда, когда программа уже запущена.


Итак, мой вопрос, как я могу установить путь к исполняемому файлу вручную? время звонка? Следующее, похоже, не работает, оно печатает только 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

1 Ответ

1 голос
/ 28 октября 2019

Проверьте, можете ли вы в дополнение к настройке установить PATH.
См. ", как установить PATH=%PATH% в качестве среды в скрипте Python? "

Цель -установить PATH в C:\Users\Florian\Downloads\mingit-busybox\cmd;%PATH%, то есть git из mingit-busybox придет first .

Вот минимальный пример:

git_dir = r"C:\Users\Florian\Downloads\mingit-busybox\cmd"
# Make sure it's at the beginning of the PATH
os.environ["PATH"] = os.pathsep.join([git_dir]) + os.pathsep + os.environ["PATH"]
# NOW import it
import git
...