GitPython:在运行时设置git可执行文件

时间:2019-10-27 16:54:12

标签: python git gitpython

我想在以下情况下使用GitPython:

  • 下载并提取便携式git(例如these之一)
  • 使用此git可执行文件克隆存储库

无论是否已经安装git,我都想使用便携式git(原因是this issue)。


我知道我可以通过设置GIT_PYTHON_GIT_EXECUTABLE环境变量来指定git可执行文件,但是

  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 个答案:

答案 0 :(得分:1)

除了设置外,还要检查是否可以设置PATH。
参见“ how to set PATH=%PATH% as environment in Python script?

目标是将PATH设置为C:\Users\Florian\Downloads\mingit-busybox\cmd;%PATH%,这意味着git中的mingit-busybox首先出现。

这是一个最小的例子:

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