将 meld 设置为 git mergetool with Python3
Setting meld as git mergetool with Python3
我尝试将 meld 设置为我的 mergetool 以与 git 一起使用:
git config --global merge.tool meld
git config --global mergetool.meld.path c:/Progra~2/meld/bin/meld
如以下问题的答案所述:
How to set Meld as git mergetool
我曾经在我的旧工作机器上使用它,但现在在我安装了 Python3 而不是 2.7 的新机器上,每当我尝试 git mergetool 时,我都会收到以下错误:
C:/Program Files/Git/mingw64/libexec/git-core/mergetools/meld:
c:/Progra~2/Meld/bin/meld: C:/msys64/MINGW32/bin/python3.exe: bad
interpreter: No such file or directory
知道我需要执行哪些额外步骤才能使其与 Python3 一起使用吗?
编辑:我也尝试过直接指向 Meld.exe,但这会导致以下崩溃:
.../bin/meld
脚本主要供参考。你应该设置
git config mergetool.meld.path "C:/Program Files (x86)/Meld/Meld.exe"
您不需要使用 Progra~2
表示法,除非出于某种原因您确实需要。
我遇到的唯一问题是它没有正确获取 C:/Program Files (x86)/Meld/lib
中已安装的依赖项扩展。您需要将 C:/Program Files (x86)/Meld/lib
添加到您的 PATH
环境变量,或者使用 SET PATH=C:/Program Files (x86)/Meld/lib;%PATH%
,或者通过 "Edit Environment Variables for your account" 某处控制 panel/start 菜单。
替代方法
如果您在文本编辑器中打开 C:\Program Files (x86)\Meld\bin\meld
,您会看到它是一个 shell 脚本,旨在 python3
中 运行(从C:\Program Files\Git\bin\sh.exe
最有可能)。
meld
的第一行是:
#!C:/msys64/MINGW32/bin/python3.exe
使用 Meld.exe
时不会弹出此问题,因为它不通过 python 解释器使用脚本。
python 解释器不太可能安装在您机器上的那个位置。相反,您可以替换 shebang 行以指向现有的解释器。例如,在我的机器上,meld
以:
开头
#!C:/Users/MadPhysicist/AppData/Local/Continuum/anaconda3/python.exe
这仍然不足以让脚本找到 meld
包和所有已安装的 GTK、cairo 等 DLL,因此您必须同时调整 python 和系统路径。在 import meld # noqua: E402
行(~78 行)之前插入以下内容:
os.environ['PATH'] = os.pathsep.join((melddir, os.path.join(melddir, 'lib'), os.environ['PATH']))
sys.path[0:0] = [os.path.join(melddir, 'lib/python3.7/site-packages')]
我无法获得为 meld
正确设置 Cairo、GTK 等的第一行。但是,您可以跳过第一行,只使用 conda 或 pip 安装包。您仍然需要将 meld 包插入 sys.path
.
请记住,meld
是在 32 位中编译的,安装文件夹中的 x86
就是证明。如果您使用包含的 DLL,则只能 运行 使用 32 位 python 解释器,这可能需要额外安装。如果您的环境已经包含所有必需的包,则不需要 32 位解释器。
我尝试将 meld 设置为我的 mergetool 以与 git 一起使用:
git config --global merge.tool meld
git config --global mergetool.meld.path c:/Progra~2/meld/bin/meld
如以下问题的答案所述:
How to set Meld as git mergetool
我曾经在我的旧工作机器上使用它,但现在在我安装了 Python3 而不是 2.7 的新机器上,每当我尝试 git mergetool 时,我都会收到以下错误:
C:/Program Files/Git/mingw64/libexec/git-core/mergetools/meld: c:/Progra~2/Meld/bin/meld: C:/msys64/MINGW32/bin/python3.exe: bad interpreter: No such file or directory
知道我需要执行哪些额外步骤才能使其与 Python3 一起使用吗?
编辑:我也尝试过直接指向 Meld.exe,但这会导致以下崩溃:
.../bin/meld
脚本主要供参考。你应该设置
git config mergetool.meld.path "C:/Program Files (x86)/Meld/Meld.exe"
您不需要使用 Progra~2
表示法,除非出于某种原因您确实需要。
我遇到的唯一问题是它没有正确获取 C:/Program Files (x86)/Meld/lib
中已安装的依赖项扩展。您需要将 C:/Program Files (x86)/Meld/lib
添加到您的 PATH
环境变量,或者使用 SET PATH=C:/Program Files (x86)/Meld/lib;%PATH%
,或者通过 "Edit Environment Variables for your account" 某处控制 panel/start 菜单。
替代方法
如果您在文本编辑器中打开 C:\Program Files (x86)\Meld\bin\meld
,您会看到它是一个 shell 脚本,旨在 python3
中 运行(从C:\Program Files\Git\bin\sh.exe
最有可能)。
meld
的第一行是:
#!C:/msys64/MINGW32/bin/python3.exe
使用 Meld.exe
时不会弹出此问题,因为它不通过 python 解释器使用脚本。
python 解释器不太可能安装在您机器上的那个位置。相反,您可以替换 shebang 行以指向现有的解释器。例如,在我的机器上,meld
以:
#!C:/Users/MadPhysicist/AppData/Local/Continuum/anaconda3/python.exe
这仍然不足以让脚本找到 meld
包和所有已安装的 GTK、cairo 等 DLL,因此您必须同时调整 python 和系统路径。在 import meld # noqua: E402
行(~78 行)之前插入以下内容:
os.environ['PATH'] = os.pathsep.join((melddir, os.path.join(melddir, 'lib'), os.environ['PATH']))
sys.path[0:0] = [os.path.join(melddir, 'lib/python3.7/site-packages')]
我无法获得为 meld
正确设置 Cairo、GTK 等的第一行。但是,您可以跳过第一行,只使用 conda 或 pip 安装包。您仍然需要将 meld 包插入 sys.path
.
请记住,meld
是在 32 位中编译的,安装文件夹中的 x86
就是证明。如果您使用包含的 DLL,则只能 运行 使用 32 位 python 解释器,这可能需要额外安装。如果您的环境已经包含所有必需的包,则不需要 32 位解释器。