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

MCO

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

  • 下载并解压缩便携的git(以下EG一个这些
  • 使用此git可执行文件克隆存储库

我想使用便携式git,无论是否已经安装git(原因是此问题)。


我知道我可以通过设置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

除了设置以外,请检查是否可以设置PATH。
请参阅“如何PATH=%PATH%在Python脚本中设置为环境?

我们的目标是设置PATHC:\Users\Florian\Downloads\mingit-busybox\cmd;%PATH%,这意味着gitmingit-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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

GHC可执行文件可以共享运行时代码吗?

来自分类Dev

为什么这段代码在运行时会生成很大的可执行文件(大约81M)?

来自分类Dev

使用Windows可执行文件作为DLL时如何初始化C运行时

来自分类Dev

Java运行时的.exec()无法打开可执行文件

来自分类Dev

cmake-是否可以在运行时将可执行文件链接到具有相对路径的共享库?

来自分类Dev

运行可执行文件的语法?

来自分类Dev

Windows在运行时删除make可执行文件。为什么?

来自分类Dev

Git:使用可执行文件

来自分类Dev

Python提高-以可执行文件身份运行时出现SyntaxError

来自分类Dev

我可以在.NET Core可执行文件中嵌入文件并在运行时读取它吗?

来自分类Dev

如何安装gitpython,初始化失败:git可执行文件错误

来自分类Dev

Python提高-以可执行文件身份运行时出现SyntaxError

来自分类Dev

运行可执行文件

来自分类Dev

没有设置可执行位时,如何从CD运行可执行文件?

来自分类Dev

Java运行时的.exec()无法打开可执行文件

来自分类Dev

设计与调试和可执行文件/运行时中的Powerbuilder 12.1和DataWindow

来自分类Dev

可执行文件在运行时在哪里寻找共享对象?

来自分类Dev

在Ubuntu Linux 16.04桌面上运行的C#可执行文件在哪里使用DLLImport共享对象在运行时寻找它们的源代码?

来自分类Dev

如何计算可执行文件的运行时间?

来自分类Dev

覆盖正在运行的可执行文件或.so

来自分类Dev

正在运行的可执行文件:无此类文件或目录

来自分类Dev

运行可执行文件的语法?

来自分类Dev

删除正在运行的可执行文件

来自分类Dev

如何在C程序运行时中正确调用可执行文件?

来自分类Dev

Git:使用可执行文件

来自分类Dev

在较旧的FreeBSD中运行时,静态可执行文件怪异的行为

来自分类Dev

在运行时将服务实例ID传递给来宾可执行文件

来自分类Dev

可执行文件的运行时间是否会显着增加运行时间

来自分类Dev

Artifactory 可以跟踪构建时独立可执行文件之间的运行时依赖关系吗?

Related 相关文章

  1. 1

    GHC可执行文件可以共享运行时代码吗?

  2. 2

    为什么这段代码在运行时会生成很大的可执行文件(大约81M)?

  3. 3

    使用Windows可执行文件作为DLL时如何初始化C运行时

  4. 4

    Java运行时的.exec()无法打开可执行文件

  5. 5

    cmake-是否可以在运行时将可执行文件链接到具有相对路径的共享库?

  6. 6

    运行可执行文件的语法?

  7. 7

    Windows在运行时删除make可执行文件。为什么?

  8. 8

    Git:使用可执行文件

  9. 9

    Python提高-以可执行文件身份运行时出现SyntaxError

  10. 10

    我可以在.NET Core可执行文件中嵌入文件并在运行时读取它吗?

  11. 11

    如何安装gitpython,初始化失败:git可执行文件错误

  12. 12

    Python提高-以可执行文件身份运行时出现SyntaxError

  13. 13

    运行可执行文件

  14. 14

    没有设置可执行位时,如何从CD运行可执行文件?

  15. 15

    Java运行时的.exec()无法打开可执行文件

  16. 16

    设计与调试和可执行文件/运行时中的Powerbuilder 12.1和DataWindow

  17. 17

    可执行文件在运行时在哪里寻找共享对象?

  18. 18

    在Ubuntu Linux 16.04桌面上运行的C#可执行文件在哪里使用DLLImport共享对象在运行时寻找它们的源代码?

  19. 19

    如何计算可执行文件的运行时间?

  20. 20

    覆盖正在运行的可执行文件或.so

  21. 21

    正在运行的可执行文件:无此类文件或目录

  22. 22

    运行可执行文件的语法?

  23. 23

    删除正在运行的可执行文件

  24. 24

    如何在C程序运行时中正确调用可执行文件?

  25. 25

    Git:使用可执行文件

  26. 26

    在较旧的FreeBSD中运行时,静态可执行文件怪异的行为

  27. 27

    在运行时将服务实例ID传递给来宾可执行文件

  28. 28

    可执行文件的运行时间是否会显着增加运行时间

  29. 29

    Artifactory 可以跟踪构建时独立可执行文件之间的运行时依赖关系吗?

热门标签

归档