我想在以下情况下使用GitPython:
无论是否已经安装git,我都想使用便携式git(原因是this issue)。
我知道我可以通过设置GIT_PYTHON_GIT_EXECUTABLE
环境变量来指定git可执行文件,但是
除了在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
答案 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