Установка соединения как git mergetool с Python3 - PullRequest
2 голосов
/ 25 сентября 2019

Я попытался установить meld в качестве моего mergetool для использования с git do:

git config --global merge.tool meld
git config --global mergetool.meld.path c:/Progra~2/meld/bin/meld

Как указано в ответах на такие вопросы, как:

Как установить Meld в качестве gitmergetool

Раньше это работало на моей старой рабочей машине, но теперь на моей новой машине, где вместо 2.7 установлен Python3, я получаю следующую ошибку, когда пытаюсь выполнить git mergetool:

C: / Program Files / Git / mingw64 / libexec / git-core / mergetools / meld: c: / Progra ~ 2 / Meld / bin / meld: C: / msys64 / MINGW32 / bin / python3.exe: плохой интерпретатор: нет такого файла или каталога

Есть идеи, какие дополнительные шаги мне нужно предпринять, чтобы заставить его работать с Python3?

РЕДАКТИРОВАТЬ: я пытался указать прямо наMeld.exe тоже, но это приводит к следующему сбою:

enter image description here

1 Ответ

2 голосов
/ 27 сентября 2019

Сценарий .../bin/meld в основном для справки.Вы должны установить

git config mergetool.meld.path "C:/Program Files (x86)/Meld/Meld.exe"

Вам не нужно использовать Progra~2notation, если вы действительно не хотите по какой-то причине.

Единственная проблема, с которой я сталкиваюсь, это то, что это неправильнозабрать установленные расширения зависимостей в C:/Program Files (x86)/Meld/lib.Вам необходимо добавить C:/Program Files (x86)/Meld/lib в переменную окружения PATH либо с помощью SET PATH=C:/Program Files (x86)/Meld/lib;%PATH%, либо через «Редактировать переменные среды для вашей учетной записи» где-нибудь в панели управления / меню «Пуск».

АльтернативаПодход

Если вы откроете C:\Program Files (x86)\Meld\bin\meld в текстовом редакторе, вы увидите, что это сценарий оболочки, предназначенный для запуска в 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 и т. Д.Таким образом, вы должны настроить как питон, так и системные пути.Вставьте следующее перед строкой 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')]

Мне никогда не удавалось получить первую строку для правильной настройки Cairo, GTK и т. Д. Для meld.Однако вы можете пропустить первую строку и просто установить пакеты, используя conda или pip.Вам все равно нужно будет вставить пакет meld в sys.path.

Имейте в виду, что meld скомпилирован в 32 бита, о чем свидетельствует x86 в папке установки.Вы можете запустить его только с 32-битным интерпретатором Python, если используете включенные библиотеки DLL, что может потребовать дополнительной установки.Вам не нужен 32-битный интерпретатор, если ваша среда уже содержит все необходимые пакеты.

...