2015-09-28 1 views
4

Я пытаюсь развернуть свой сайт Django, который написан на Python 2.7, на Windows 64-разрядной машине (Windows Server 2008 R2). Я установил предварительно скомпилированную версию Apache (Apache 2.4.16 x64) с https://www.apachehaus.com/cgi-bin/download.plx (из-за отсутствия опции, предоставляемой Apache Lounge ***), и проверил, что Python 2.7 работает на 64-битной основе и компилируется с VC9. Мне не удалось найти предварительно построенный двоичный файл для mod_wsgi (для Windows 64 бит и скомпилирован с VC9), поэтому я загрузил исходный код для mod_wsgi с https://github.com/GrahamDumpleton/mod_wsgi/releases/tag/4.4.13 и следил за направлением от https://github.com/GrahamDumpleton/mod_wsgi/blob/develop/win32/README.rst, меняя файл ap24py27-win64-VC9.mk, чтобы указать на правые каталоги для APACHE_ROOTDIR и PYTHON_ROOTDIR и с использованием 64-битной командной строки C++ 2008 для запуска команды nmake -f ap24py27-win64-VC9.mk clean. Тем не менее, это дало мне ошибку:Установите mod_wsgi с Python 2.7 в Windows 64 бит

wsgi_memory.obj : error LNK2019: unresolved external symbol GetProcessMemoryInfo referenced 
    in function getPeakRSS 
mod_wsgi.so : fatal error LINK1120: 1 unresolved externals 
NMAKE : fatal error U1077: `"...\Visual C++ for Python\9.0\VC\Bin\amd64\c1.EXE"` : 
    return code `0x2` 
Stop. 

Я прочитал документы по установке и настройки для mod_wsgi несколько раз и искал в Интернете, включая SO в течение последних нескольких часов безрезультатно. Что я делаю неправильно здесь и как я могу это исправить?

*** Я знаю, что официальный документ для установки mod_wsgi предостерегает от использования двоичных файлов из других источников, кроме Apache Lounge, но я, похоже, не могу найти нужную скомпилированную версию (для VC9 и Windows 64 бит) из сайт. Это может быть проблемой, и если да, то как я могу это исправить?

Обновление: после предложения Аделина я смог получить namke -f ap24py27-win64-VC9.mk clean для запуска. Однако, когда я пытаюсь работает namke -f ap24py27-win64-VC9.mk или namke -f ap24py27-win64-VC9.mk install, я получаю страницы предупреждений, которые говорят: warning C4820: '...' : '...' bytes padding added after data member '...', пока компилятор не завершит работу с

fatal error C1083: Cannot open include file: 'Python.h': No such file or directory 
...\mod_wsgi-4.4.13\src\server\wsgi_memory.c<124> : warning C4711: function 'getCurrentRSS' selected for automatic inline expansion 
NMAKE: fatal error U1077: '"C:\...\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\c1.EXE"' : return code '0x2' 
Stop. 

Кто-нибудь есть какие-либо идеи, почему это может быть и как я должен идти о фиксации его?

ответ

3

У меня была эта ошибка.

Проблема в том, что cl.exe не находит psapi.lib. Этот lib включает функцию, указанную в wsgi_memory.c - GetProcessMemoryInfo.

Чтобы это исправить, необходимо выполнить следующие действия:

  1. Расположить psapi.lib (запустить поиск по C:\)
  2. Откройте ap24py27-win64-VC9.mk файл, который вы используете для компиляции, с любым текстовым редактором
  3. Посмотрите, какой еще файл содержит .mk. Скорее всего common-VC9.mk
  4. Открыть этот файл (common-VC9.mk) с помощью любого текстового редактора
  5. Под LDFLAGS, добавьте еще одну линию /LIBPATH:"PATH_FOUND_AT_STEP_1"\
  6. Сохранить изменения и повторите

Какая боль в заднице это было для меня тоже :)

PS Если вы не найдете psapi.lib в любом месте, это потому, что у вас нет SDK для Windows.Я установил оба Windows 7 и Windows 8 SDKs и в конечном счете имел psapi.lib находится здесь C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64

Edit: Чтобы дать вам решение для ваших новых ошибок в несколько общих чертах, когда nmake бросает "No such file" ошибки, расположение файла неправильно указан в файле common-VC9.mk.

Есть два типа файлов nmake будет искать: .h или .lib.

Если номер .h не найден, соответствующий путь должен быть правильно указан под переменной CPPFLAGS файла common-VC9.mk. Если номер .lib не найден, вам необходимо соответствующим образом обновить путь LDFLAGS.

Как? Точно так же вы включили путь для psapi.lib: найдите файл и добавьте соответствующий путь к правильной переменной: CPPFLAGS или LDFLAGS.

+0

Спасибо! Я смог получить '' 'nmake ... clean''' для запуска с вашим предложением, но теперь компилятор бросает мне ошибки, когда я пытаюсь запустить' '' nmake ... '' 'и' '' nmake. .. install'''. Я обновил вопрос, чтобы отразить эти новые ошибки - есть ли у вас какое-либо понимание этой проблемы? – Rae

+0

См. Мое редактирование для преодоления новых ошибок. – Adelin

+0

Хорошо, это имеет смысл. Что было бы эквивалентно '' '' LIBPATH'' '' '.h''', когда я добавляю путь к' '' python.h''' в '' 'CPPFLAGS'''? – Rae