Ошибка установки Mercurial на Apache с Win7 - сбой загрузки DLL - PullRequest
2 голосов
/ 05 декабря 2011

Я пытаюсь настроить Mercurial, публикуя его через Apache на компьютере с Windows7. Вот шаги, которые я выполнил:

  1. Установлено Mercurial mercurial-2.0.0-x86.msi
  2. Установленный сервер Apache - httpd-2.2.21-win32-x86-openssl-0.9.8r.msi
  3. Установленный Python python-2.6.1.msi
  4. Настройте Apache для использования Python через mod_wsgi - mod_wsgi-win32-ap22py26-3.3.so. Apache запускается нормально до этого момента.
  5. Создан каталог с именем D: \ hg \ scripts
  6. Разархивировал файл library.zip, который поставляется с Mercurial здесь D: \ hg \ scripts \ library_hg
  7. Скопируйте каталог шаблонов из Mercurial в D: \ hg \ scripts \ library_hg \ templates
  8. Установить демонстрационный репозиторий в D: \ hg \ hgrepos \ demo1
  9. Создайте D: \ hg \ scripts \ hgweb.config. Источник:

    # An example WSGI for use with mod_wsgi, edit as necessary
    # An example WSGI for use with mod_wsgi, edit as necessary
    # See https://www.mercurial-scm.org/wiki/modwsgi for more information
    
    # Path to repo or hgweb config to serve (see 'hg help hgweb')
    config = "D:/hg/scripts/hgweb.config"
    
    # Uncomment and adjust if Mercurial is not installed system-wide:
    import sys; sys.path.insert(0, "D:/hg/scripts/library_hg");
    #print sys.path;
    
    # Uncomment to send python tracebacks to the browser if an error occurs:
    #import cgitb; cgitb.enable()
    
    # enable demandloading to reduce startup time
    #from mercurial import demandimport; demandimport.enable()
    
    from mercurial.hgweb import hgweb
    application = hgweb(config)
    
  10. Мой D: \ hg \ scripts \ hgweb.config выглядит так:

    [web]
    style = coal
    
    [paths]
    / = D:/hgrepos/*
    
  11. Моя конфигурация для Apache httpd.conf:

    WSGIScriptAlias /hg "D:/hg/scripts/hgweb.wsgi"
    <Directory "D:/hg/hgrepos">
        Order deny,allow
        Allow from all
    </Directory>
    
    <Directory "D:/hg/scripts/">
        Options ExecCGI FollowSymlinks
    
        AddHandler wsgi-script .wsgi
    
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
  12. Когда я пытаюсь получить доступ к сценарию hg http://localhost:9000/hg,, я получаю следующую ошибку:

    mod_wsgi (pid=3492): Target WSGI script 'D:/hg/scripts/hgweb.wsgi' cannot be loaded as Python module.
    mod_wsgi (pid=3492): Exception occurred processing WSGI script 'D:/hg/scripts/hgweb.wsgi'.
    Traceback (most recent call last):
      File "D:/hg/scripts/hgweb.wsgi", line 17, in <module>
        from mercurial.hgweb import hgweb
      File "mercurial\\hgweb\\__init__.pyc", line 10, in <module>
      File "mercurial\\hgweb\\hgweb_mod.pyc", line 10, in <module>
      File "mercurial\\ui.pyc", line 8, in <module>
      File "mercurial\\i18n.pyc", line 8, in <module>
      File "mercurial\\encoding.pyc", line 9, in <module>
      File "unicodedata.pyc", line 12, in <module>
      File "unicodedata.pyc", line 10, in __load
    ImportError: DLL load failed: The specified module could not be found.
    

Я почти не знаю Python. Я пытался найти причину этой ошибки на разных форумах безуспешно. Цените, если кто-то может направить меня в правильном направлении

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

Отказаться после нескольких дней, пытаясь найти решение. Я также попытался построить Mercurial для Windows без успеха.

Я выполнил те же команды, что и в hgweb.wsgi, из оболочки python, и я не получаю ошибок DLL. Я думаю, что этот поток обрисовывает в общих чертах проблему, которая лежит в дистрибутиве python, а не в mercurial: http://groups.google.com/group/modwsgi/browse_thread/thread/fa72de2deef276d9

По некоторым причинам python, работающий через apache и mod_wsgi, не может найти библиотеки DLL в Windows.

0 голосов
/ 06 декабря 2011

Из https://www.mercurial -scm.org / downloads вы должны загрузить пакет Python 2.6 и удалить каталог D: \ hg \ scripts \ library_hg, так как это приведет к потере пространства после установки этого пакета.и вы также можете закомментировать строку sys для импорта.

Кроме того, в вашей конфигурации вы хотите [коллекции], а не [пути] (и нет *)

Может быть не нужно, новы получаете ошибки, отличные от невозможности загрузки модулей, замените последние две строки вашего файла hgweb.wsgi следующим:

from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...