Как правильно установить dulwich, чтобы hg- git работал в Windows?

Я пытаюсь использовать расширение hq- git Mercurial в Windows (для Windows 7 требуется 64-разрядная версия). У меня установлен Mercurial и Git. У меня установлен Python 2.5 (32-разрядный).

Я выполнил инструкции http://hg-git.github.com/ для установки расширения. Исходная easy_install завершилась неудачно, поскольку она не смогла скомпилировать dulwich без Visual Studio 2003.

Я установил dulwich вручную:

  • git clone git://git.samba.org/jelmer/dulwich.git
  • cd dulwich
  • c:\Python25\python setup.py --pure install

Теперь, когда я запускаю easy_install hg- git, он преуспевает (поскольку зависимость dulwich выполняется).

В моем C:\Users\username\Mercurial.ini у меня есть:

[extensions]
hgext.bookmarks =
hggit =

Когда я печатаю 'hg' в командной строке, я вижу: "*** не удалось импортировать расширение hggit: нет модуля с именем hggit"

В моей папке c:\Python25 единственная ссылка на hggit, которую я вижу, это Lib\site-packages\hg_git-0.2.1-py2.5.egg. Предполагается, что это должно быть извлечено где-нибудь, или оно должно работать как есть?

С тех пор, как это не удалось, я попытался выполнить "более привлекательные" инструкции на странице hg- git, которые предложили клонирование git://github.com/schacon/hg- git.git и ссылку на путь в моя конфигурация Mercurial. Я клонировал репо и изменил файл расширений, чтобы выглядеть так:

[extensions]
hgext.bookmarks =
hggit = c:\code\hg-git\hggit

Теперь, когда я запускаю hg, я вижу: *** не удалось импортировать расширение hggit из c:\code\hg- git\hggit: нет модуля с именем dulwich.errors.

Итак, это говорит мне, что теперь он находит hggit, потому что я вижу в hg- git\hggit\git_handler.py, что он вызывает

from dulwich.errors import HangupException

Это заставляет меня думать, что dulwich установлен неправильно, или нет в пути.

Update:

Из командной строки Python:

import dulwich

дает Import Error: No module named dulwich

Однако в папке C:\Python25\Lib\site-packages у меня есть папка dulwich-0.5.0-py2.5.egg, которая, как представляется, заполняется. Это было создано вышеописанными шагами. Есть ли еще один шаг, который я должен предпринять, чтобы сделать его частью "пути" Python?

Из командной строки Python (как предложено в одном из ответов):

import pkg_resources
pkg_resources.require('dulwich')

дает [dulwich 0.5.0 (c:\python25\lib\site-packages\dulwich-0.5.0-py2.5.egg)]

Так что это говорит мне? Импорт dulwich не удался, но, видимо, pkg_resources может его найти. Что я могу сделать с этой информацией?

Ответ 1

Это заставляет меня думать, что дулвич не установлен правильно или нет в путь.

Ты абсолютно прав. Меркурийные двоичные дистрибутивы для Windows "заморожены" - они используют код Python и интерпретатор в комплекте с ними и, следовательно, не зависят от пакетов, установленных в системе PYTHONPATH. Когда вы укажете путь к расширению hggit в Mercurial.ini, hg пытается импортировать его с помощью прямого пути, но библиотека dulwich не импортируется явно hg и не связана с ее библиотекой, поэтому импорт не выполняется.

Можно добавить как Dulwich, так и HgGit в library.zip, который установлен вместе с hg.exe, но для меня лучший способ - установить все из источника, включая Mercurial и выполнить команды с использованием .bat файлов, установленных в \Python\Scripts. В этом случае вам понадобится:

  • Установить Mercurial из источника. Это создает "чистую" версию, поскольку пользователи Windows обычно не имеют Visual Studio или альтернативного компилятора для компиляции ускорений C.
  • Установите Dulwich - я бы использовал последний снимок как для Git, так и для Dulwich.

    python setup.py --pure install

  • Установите последний снимок hgGit

    установка python setup.py

  • Изменить Mercurial.ini для включения hggit =

  • Запустите Mercurial, используя ваш \Python\Scripts\hg.bat

Ответ 2

Я нашел более простое решение в http://candidcode.com/2010/01/12/a-guide-to-converting-from-mercurial-hg-to-git-on-a-windows-client/

И тогда я нашел еще более простое решение:

Чтобы использовать расширение hg- git Mercurial в Windows:

  • установить официальные двоичные файлы Mercurial
  • положить папку dulwich из источников источников dulwich и hggit из hg- git источников в root из библиотеки .zip в папке установки Mercurial.
  • добавьте следующее в% USERPROFILE%\Mercurial.ini:

[extensions]
hgext.bookmarks=
hggit=

Для поддержки SSH вам понадобится plink.exe из семейства PuTTY. После этого вы должны добавить в Mercurial.ini следующее:

[ui]
username = John Doe <[email protected]>
ssh=d:/home/lib/dll/plink.exe -i "d:/home2/ssh-private-key.ppk"

При первом подключении к SSH-серверу необходимо запустить putty.exe и попытаться подключиться к нему. Он добавит отпечаток ключа сервера в реестр. В противном случае plink попросит вас принять отпечаток пальца, но он не примет никакого ввода.

Вы можете использовать puttygen.exe для генерации закрытых ключей. Либо используйте ключи без парольной фразы, либо используйте агент аутентификации Pageant.exe ssh.

Ответ 3

Если вы можете установить TortoiseHg, он включает в себя dulwich и другие требования.

Ответ 4

Попробуйте выполнить следующую конфигурацию (изменение вашего пути), которая работает для меня:

[extensions]
; hg-git extention
hgext.bookmarks =
hggit = C:\Python26\Lib\site-packages\hg_git-0.2.1-py2.6.egg\hggit

В моем случае, когда у меня есть пустое значение для hggit =, я получаю ту же ошибку, что и в этом случае. Но я могу import dulwich без проблем в оболочке python, поэтому вы должны проверить свой easy-install.pth (как указано Дэвидом), если он содержит dulwich-0.5.0-py2.5.egg. Я также установил чистую версию dulwich.

Ответ 5

Пока вы не добьетесь import dulwich, hggit не будет работать. Убедитесь, что файл dulwich egg находится в файле easy-install.pth в разделе site-packages.

Для дальнейшей отладки вы можете попросить об этом pkg_resources:

import pkg_resources
pkg_resources.require("dulwich")

Ответ 6

Я столкнулся с этой проблемой и с dulwich.errors. Вместо того, чтобы устанавливать все с нуля. Я просто скопировал dulwich из моих пакетов-сайтов по умолчанию в пакеты меркуриальных сайтов. работал без проблем.

Ответ 7

Основываясь на techtonik объяснение причины неудачного импорта dulwich.errors, я нашел решение, которое кажется мне более простым, чем уже предлагаемые:

На странице Mercurial download предлагается

Mercurial <x.y.z> для Python 2.7 на Windows x86 (исходная установка)

и

Mercurial <x.y.z> для Python 2.7 на Windows x64 (исходная установка)

как .EXE файлы, которые устанавливают Mercurial как модуль Python в существующую установку Python 2.7 (x86 или x64).

Если hg- git и dulwich были установлены на эту установку Python, ошибки импорта должны исчезнуть.

Если вы не знаете, что делать сейчас, я надеюсь, что это пошаговое объяснение поможет:

Предварительные условия

  • Установлен Python 2.7
  • <python 2.7 install dir> и <python 2.7 install dir>\Scripts находятся в переменной среды PATH
  • hg- git (и dulwich) были установлены в эту установку Python с помощью инструкций здесь

Действия

  • Удалите любую существующую установку Mercurial.
  • Загрузите и установите один из вышеперечисленных EXE файлов, в зависимости от того, установлена ​​ли ваша установка Python 2.7 32-битной или 64-битной (если вы получаете ошибку "Python 2.7 не может быть найдена в реестре", вам, вероятно, нужен другой).

Теперь hg clone <some git repo> должен работать на консоли.

Ответ 8

Я получил эту ошибку, даже после загрузки последней версии Tortoisehg, и убедитесь, что был установлен плагин hggit, а также мои файлы .ini и hgrc имели правильную запись, чтобы включить hggit.

Оказывается, моя проблема заключалась в том, что у меня на пути были как ртутные, так и черепаховые. Поэтому, когда я запускал любые команды hg, он использовал hg.exe в папке mercurial, а не hg.exe в каталоге torsoisehg.

Это имеет смысл, но в моей ртутной установке не было подключаемых модулей. Мое исправление заключалось в том, чтобы удалить меркурий с моего пути, так что команды hg проходят через каталог черепахового дерева, так как он полностью связан с hg. Обратите внимание, однако, рекомендуемым вариантом может быть обновление mercurual до версии с плагинами, которые вам нужны, но это то, что сработало для меня. Я попытался заменить library.zip в mercurial на ту, что в tortoisehg, и это сработало, но это привело к другим ошибкам, как можно было бы себе представить.

@techtonik ответ привел меня по этой дороге, за которую я благодарен.

Recap: проверьте, какой hg exe запускает ваши hg-команды, проверяя ваш путь, потому что hg.exe не находит плагины по какой-либо причине.

Ответ 9

sudo apt-get install python-dev # Плохая вам зависимость!

sudo easy_install dulwich

Успех!