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

Я пытаюсь использовать расширение hg-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 установлен неправильно, или нет на пути.

Обновить:

Из командной строки 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 может его найти. Что я могу сделать с этой информацией?

9 Solutions collect form web for “Как правильно установить dulwich, чтобы hg-git работал в Windows?”

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

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

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

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

    python setup.py –pure install

  3. Установите последний снимок HgGit

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

  4. Измените Mercurial.ini, чтобы включить hggit =

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

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

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

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

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

 [extensions] hgext.bookmarks= hggit= 

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

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

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

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

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

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

 [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 .

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

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

 import pkg_resources pkg_resources.require("dulwich") 

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

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

На странице загрузки Mercurial предлагается

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

а также

Mercurial <xyz> для 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 среды PATH
  • hg-git (и dulwich) были установлены в эту установку Python по инструкциям отсюда

меры

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

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

Я получил эту ошибку, даже после загрузки последнего 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 не находит плагины по какой-либо причине.

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

sudo easy_install dulwich

Успех!

  • Почему исполняемый файл python открывает новый экземпляр окна, когда функция с помощью многопроцессорного модуля вызывается в окнах
  • python opencv dll load failed Отсутствующие переменные среды?
  • Печать PDF-документа с помощью модуля win32print python?
  • aysncio не может читать stdin в Windows
  • Установка подушки для Python в Windows
  • Celery + Django: не удается запустить celerybeat в Windows 7
  • Python3: запись файлов csv
  • Наблюдение за изменениями файлов в каталоге
  • Python - лучший язык программирования в мире.