Как я могу получить hgwebdir Mercurial, работающий на Windows? - PullRequest
9 голосов
/ 13 марта 2009

Вот шаги, которые я предпринял:

  • установить apache 2.2.x
  • установить TortoiseHg 0.7
  • скопировать hgwebdir.cgi, hgweb.config в cgi-bin
  • отредактируйте hgweb.config соответствующим образом
  • распакуйте $ blah \ TortoiseHg \ library.zip, чтобы распаковать $ blah \ TortoiseHg \ library
  • sys.path.append ("$ blah \ TortoiseHg \ library") в начале hgwebdir.cgi
  • Переместить $ blah \ TortoiseHg \ templates в $ blah \ TortoiseHg \ library \ templates

(Изменить: я забыл добавить, что все эти шаги изложены здесь .)

Когда я запускаю http://localhost/cgi-bin/hgwebdir.cgi/, я вижу свой репозиторий. Если я пытаюсь просмотреть этот репозиторий, мне говорят «Ошибка загрузки DLL: указанный модуль не найден». В последней строке обхода говорится «c: \ program files \ apache group \ apache \ cgi-bin \ mercurial \ osutil.pyc in __load ()».

Я читал о людях, имеющих проблемы с pywintypes25.dll; он находится в "c: \ program files \ tortoisehg" и уже находится в моем PATH.

Какую DLL не удалось найти?

Ответы [ 5 ]

7 голосов
/ 14 марта 2009

вы пропустили программы Mercurial

Есть 3 способа выбраться из этого

  1. последние версии Mercurial поставляются с чистыми реализациями Python, которые вы можете найти в Mercurial / Pure
  2. скомпилируйте его самостоятельно (я не совсем уверен в шагах, на любом unix это просто работает)
  3. захватите установщик win32 с веб-сайта
    обратите внимание, что я еще не взглянул на то, как они строятся
    (вам нужна установка на основе distutils, а не на py2exe)
4 голосов
/ 16 марта 2009

Первое: не используйте TortoiseHg для этого. Вместо этого используйте установщик Mercurial.

(TortoiseHg пытается быть настолько независимым от вашей установки Python, насколько это возможно, и по причинам, неясным для этого новичка в Python, что-то не работает. Что-то о py2exe.)

В противном случае просто следуйте инструкциям в HgWebDirStepByStep. Я должен был установить pywintypes, но YMMV. Наконец, утилита распаковки, упомянутая на этой странице, может делать странные вещи с правами доступа к файлам: мне пришлось добавить разрешения на чтение в каталог Templates и его файлы / подкаталоги.

Кроме того, если вам интересно, как установить стиль, добавьте это в hgweb.config:

[web]
style = foo
2 голосов
/ 17 июня 2011

Моя установка включает в себя apache 2.2.17, mod_wsgi 3.3, python 2.7.2, trac 0.12.2, mercurial 1.8.4. Два вопроса всплыли:

  1. порядок инициализации импорта ртути по требованию
  2. mercurial не может загрузить DLL в пакетах сайта.

Я решил проблему следующим образом:

  1. изменить hgwebdir.wsgi, чтобы отключить импорт по запросу:

from mercurial import demandimport; demandimport.disable()

  1. создать чистый (.py только, без скомпилированного .pyd) ртутный пакет и установить. См. Также https://www.mercurial -scm.org / wiki / WindowsInstall

E:\Dist\mercurial-1.8.4>setup.py --pure build<br> E:\Dist\mercurial-1.8.4>setup.py --pure install

Скомпилированные версии (с Microsoft Visual Studio 2008) не могут загрузить DLL:

[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] mod_wsgi (pid=6092): Exception occurred processing WSGI script 'D:/Home/web/apache/cgi-bin/hgwebdir.wsgi'.
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] Traceback (most recent call last):
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24]   File "D:/Home/web/apache/cgi-bin/hgwebdir.wsgi", line 9, in <module>
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24]     from mercurial.hgweb.hgwebdir_mod import hgwebdir
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24]   File "C:\\Apps\\Python27\\lib\\site-packages\\mercurial\\hgweb\\__init__.py", line 10, in <module>
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24]     import hgweb_mod, hgwebdir_mod
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24]   File "C:\\Apps\\Python27\\lib\\site-packages\\mercurial\\hgweb\\hgweb_mod.py", line 10, in <module>
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24]     from mercurial import ui, hg, hook, error, encoding, templater
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24]   File "C:\\Apps\\Python27\\lib\\site-packages\\mercurial\\ui.py", line 10, in <module>
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24]     import config, util, error
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24]   File "C:\\Apps\\Python27\\lib\\site-packages\\mercurial\\config.py", line 9, in <module>
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24]     import error, util
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24]   File "C:\\Apps\\Python27\\lib\\site-packages\\mercurial\\util.py", line 17, in <module>
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24]     import error, osutil, encoding
[Thu Jun 16 21:46:28 2011] [error] [client 192.168.178.24] ImportError: DLL load failed: The specified module could not be found.
1 голос
/ 20 октября 2009

Я знаю, что на этот вопрос уже дан ответ, но у меня возникла несколько иная проблема, и я нашел решение -

Я уверен, что мне не хватает чего-то очевидного в конфигурации Python (2.5.4), но у меня проблемы с .pyd против .dll. (У меня были те же проблемы с библиотеками Subversion Python.) Я вижу osutil.pyd в Mercurial \ library.zip, но он не загружается. Поэтому я разархивировал файл library.zip, а затем скопировал * .pyd в * .dll, например:

REM Ugly DOS... Recursively renames all .pyd files to .dll
for /f "tokens=*" %%a in ('dir /s /b *.pyd') do copy "%%a" "%%~da%%~pa%%~na.dll"

Убедитесь, что распакованный каталог библиотеки находится в PYTHONPATH, но после этого я могу успешно выполнить его: из mercurial import osutil. Также не забудьте скопировать или переместить каталог шаблонов в недавно распакованный каталог библиотеки.

Выполните действия, описанные в разделе 5 HgWebDirStepByStep , для остальных. Я не испытывал "Gotchas" в Разделе 5.3, хотя.

0 голосов
/ 12 октября 2011

Для тех, кто ищет пошаговое руководство по использованию TortoiseHg и Apache в Windows, я написал его здесь: http://makinggames.ca/dev/version-control-mercurial-apache-tortoisehg/

...