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 ответа:
Отвечая на мой собственный вопрос с моим предыдущим обновлением, так как других желающих пока нет.
Подходящее решение: поскольку 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.