Mercurial extensions не работает в Windows 7 x64?


Мы тестируем вождение Mercurial на работе. Мы не хотим, чтобы каждый раз, когда мы взаимодействуем с репозиторием, нам приходилось вводить имя пользователя/pass, поэтому мы настроили расширение mercurial_keyring. Мы:

  • установлен Python 2.6.5 (32 или 64 бит, в зависимости от системы)
  • установить setuptools (easy_install для.exe)
  • брелок easy_install
  • easy_install mercurial_keyring

И затем внес соответствующие изменения в %userprofile% / mercurial.ini в [auth] раздел. Он прекрасно работает на компьютере моего коллеги (32bit xp sp3), но не работает на моей машине (Windows 7 Ultimate x64). Также следует отметить, что setuptools должны были быть построены из исходного кода на Win 7 x64 (python setup.py bdist_wininst, а затем запустить результирующие setuptools-0. 6c11.win-amd64.исполняемый).

Используя только hg.exe из установки Mercurial 1.5 binary (the .msi), я получаю эту ошибку при запуске hg.exe:

*** не удалось импортировать расширение mercurial_keyring: нет названного модуля mercurial_keyring

Я попытался изменить свой ртутный.ini, чтобы указать путь к mercurial_keyring.py файл, вместо того, чтобы mercurial найти его (так как он находится в PYTHONPATH).

Старый:

[extensions]
mercurial_keyring =

Новое:

[extensions] mercurial_keyring =
c:/mercurial/extensions/mercurial_keyring.py

Ошибка изменяется на:

Прервать: не удалось импортировать модуль брелок!

Таким образом, несмотря на то, что путь к расширению mercurial_keyring работает, зависимый модуль keyring по-прежнему не может быть найден.

После дальнейшее расследование показало, что никакие расширения не работают. Все они приводят к ошибке:

* * * не удалось импортировать расширение [имя расширения]: нет названного модуля [имя модуля]

Оказывается, что при запуске hg.exe, он не знает о PYTHONPATH. Я пытался:

  • Python 2.6.5 32 бит
  • Python 2.6.5 64 бит
  • построение Mercurial 1.5 из источника с помощью MinGW
  • построение Mercurial 1.5 из источника с MSVC9
  • Использование hg.exe от 1.5 бинарный dist (.msi)
  • используя hg.py в c:python26scripts при построении из исходного кода
  • различные конфигурации в %userprofile% / mercurial.ini
  • Использование setuptools (easy_install.exe) для установки keyring и mercurial_keyring
  • построение keyring и mercurial_keyring из исходного кода (python setup.py bdist_wininst)

Ничего не работает. Самое близкое, что у меня есть, это использование hg.py при построении от источника. Это, по крайней мере, не дает мне ошибок, и на самом деле создает %userprofile% / wincrypto_pass.cfg, когда я ввожу свои учетные данные. Но при последующих запросах он не вводит учетные данные автоматически. Это снова побуждает меня к ним.

Интересно, что TortoiseHGиспользует связку ключей. Я просто не могу заставить его работать в командной строке. Я думаю, что-то происходит с Win 7 x64, что предотвращает mercurial (hg.exe) от просмотра PYTHONPATH, поэтому он не может найти ни один из установленных модулей.

Есть ли у кого-нибудь расширения работа в Win 7 x64? В частности, с бинарной установкой mercurial (не hg.py)?

Обновление На данный момент я нашел подходящую работу. Поскольку TortoiseHG действительно работает с mercurial_keyring, я просто изменил настройку пути, чтобы включить папку tortoiseHG, но не c:mercurial. Теперь, когда я набираю "hg" в командной строке, он использует hg.exe в папке tortoiseHG, которая отлично работает. Точно так же, это все еще проблема с ртутными расширениями на Win 7 x64. Ответы приветствуются.

3 14

3 ответа:

Отвечая на мой собственный вопрос с моим предыдущим обновлением, так как других желающих пока нет.

Подходящее решение: поскольку TortoiseHG действительно работает с mercurial_keyring, я просто изменил свой путь на include папку tortoiseHG и exclude c:\mercurial. Теперь, когда я набираю "hg" в командной строке, он использует hg.exe в папке tortoiseHG, которая отлично работает с брелоком.

Я использую:

  • на Windows Server 2008 SP2 x86:
    • Python 2.6.5 x86
    • Mercurial 1.5.1 x86
    • TortoiseHg 1.0.1 x86
  • в Windows Server 2008 R2:
    • Python 2.6.5 x86
    • Mercurial 1.5.1 x86
    • TortoiseHg 1.0.1 x64

В обоих случаях все настроенные расширения загружаются без ошибок.

Все инструменты устанавливаются с помощью установщиков, установленных на их сайтах. Появляется Меркуриал перед черепахой в пути. Я использую общий конфигурационный файл ~/.hgrc для обоих инструментов и файл Mercurial.ini в папке установки TortoiseHg, который загружает только расширение mercurial_keyring.

В командной строке я должен вводить пароль каждый раз, когда это необходимо, но в TortoiseHg расширения связки ключей он полностью работает.

Со страницы расширение связки ключей на Mercurial wiki:

Если вы используете Windows, мы рекомендуем вам использовать TortoiseHg. THG корабли с Windows specific keyring backends, без которых расширение mercurial-keyring не может нормально функционировать в Windows.

Обновление http://asimilatorul.com/adapter/post/using-mercurial_keyring-extension-with-mercurial-on-windows/

Вы можете скопировать необходимые файлы из библиотеки TortoiseHg .zip в Mercurial's Библиотека .zip :

  • hgext\mercurial_keyring.pyo
  • Брелок_ _ init__.pyo
  • Брелок\бэкэнд.pyo
  • Брелок\ядро.pyo
  • win32_crypto.pyd

Страница расширения утверждает, что TortoiseHG имеет некоторые дополнительные компоненты, чтобы заставить его работать на Windows, и что он не работает должным образом без них. Похоже, что обходной путь обращения к версии TortoiseHG может быть самым простым способом заставить ее работать в Windows.