GitPython:在运行时设置 git 可执行文件
GitPython: set git executable at runtime
我想在以下场景中使用 GitPython:
- 下载并解压一个便携 git(例如 these 之一)
- 使用此 git 可执行文件克隆存储库
我想使用便携式 git,无论 git 是否已安装(原因是 this issue)。
我知道我可以通过设置 GIT_PYTHON_GIT_EXECUTABLE
环境变量来指定 git 可执行文件,但是
我还没有找到在 windows 上执行此操作的方法(setx
似乎做了 某事 ,但是 env
之后显示没有这样的变量)除了手动编辑系统环境变量。
这应该是一个最终用户程序,我无法发送像 "please set an environment variable" 这样的指令。
路径只有在程序已经运行时才知道。
所以我的问题是,如何在运行时手动设置可执行文件路径?以下似乎不起作用,它只打印 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
检查除了设置之外,您是否可以设置 PATH。
参见“how to set PATH=%PATH%
as environment in Python script?”
目标是将 PATH
设置为 C:\Users\Florian\Downloads\mingit-busybox\cmd;%PATH%
,这意味着来自 mingit-busybox
的 git
将 首先出现 。
这是一个最小的例子:
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
我想在以下场景中使用 GitPython:
- 下载并解压一个便携 git(例如 these 之一)
- 使用此 git 可执行文件克隆存储库
我想使用便携式 git,无论 git 是否已安装(原因是 this issue)。
我知道我可以通过设置 GIT_PYTHON_GIT_EXECUTABLE
环境变量来指定 git 可执行文件,但是
我还没有找到在 windows 上执行此操作的方法(
setx
似乎做了 某事 ,但是env
之后显示没有这样的变量)除了手动编辑系统环境变量。这应该是一个最终用户程序,我无法发送像 "please set an environment variable" 这样的指令。
路径只有在程序已经运行时才知道。
所以我的问题是,如何在运行时手动设置可执行文件路径?以下似乎不起作用,它只打印 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
检查除了设置之外,您是否可以设置 PATH。
参见“how to set PATH=%PATH%
as environment in Python script?”
目标是将 PATH
设置为 C:\Users\Florian\Downloads\mingit-busybox\cmd;%PATH%
,这意味着来自 mingit-busybox
的 git
将 首先出现 。
这是一个最小的例子:
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