gitCommandNotFound在python git库中

x33g5p2x  于 2023-04-28  发布在  Git
关注(0)|答案(2)|浏览(214)

我在本地windows机器上创建的这个脚本工作正常。

import git    
repo = C:/user/folder/repo
g = git.cmd.Git(repo)
g.execute("git config --get remote.origin.url")

但是如果我尝试在我们的unix服务器上运行它(如果我改变了repo目录),我会得到

File "/usr/local/lib/python3.6/site-packages/git/cmd.py", line 735, in execute
    raise GitCommandNotFound(command, err) from err
git.exc.GitCommandNotFound: Cmd('git') not found due to: FileNotFoundError('[Errno 2] No such file or directory: 'git config --get remote.origin.url': 'git config --get remote.origin.url'')

基于gitPython文档
exceptiongit。exc.GitCommandNotFound(command,cause)如果在PATH或GIT_PYTHON_GIT_EXECUTABLE环境变量指定的路径中找不到git可执行文件,则抛出
所以我尝试将git添加到PATH。
vi ~/.bashrc

export GIT_PYTHON_GIT_EXECUTABLE=/usr/local/lib/python3.6/site-packages/git/__init__.py
export PATH=$PATH:$ORACLE_HOME:${LDCONFIG_HOME}:$GIT_PYTHON_GIT_EXECUTABLE

但还是不行

1aaf6o9v

1aaf6o9v1#

阅读文档时,execute似乎使用了subprocess.Popen,在这种情况下,它只是没有您的环境。你有几种方法来解决这个问题,要么使用env关键字和包含PATH的字典,要么传递shell=True(如果用户代码可以到达这里,这是危险的)
所以要么这样做:

g.execute("git config --get remote.origin.url", env=os.environ)

g.execute("git config --get remote.origin.url", shell=True)
busg9geu

busg9geu2#

这些对我很有效。:-

export PATH=$PATH:/usr/bin/git
export GIT_PYTHON_GIT_EXECUTABLE=/usr/bin/git
export GIT_SSH_COMMAND="/usr/bin/ssh -i ~/.ssh/id_rsa"

相关问题