Установите mod wsgi с Python 2.7 на Windows 64 bit


Я пытаюсь развернуть свой веб-сайт Django, который написан с использованием Python 2.7, на 64-разрядной машине windows (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. Однако это дало мне ошибку:

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 Python9.0VCBinamd64c1.EXE"` :
  return code `0x2`
Stop.

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

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

Обновление : следующее По предложению Аделина, мне удалось заставить 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.13srcserverwsgi_memory.c<124> : warning C4711: function 'getCurrentRSS' selected for automatic inline expansion
NMAKE: fatal error U1077: '"C:...MicrosoftVisual C++ for Python9.0VCBinamd64c1.EXE"' : return code '0x2'
Stop.
Есть ли у кого-нибудь идеи, почему это может быть и как я должен это исправить?
1 4

1 ответ:

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

Проблема в том, что cl.exe не находит psapi.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. сохраните изменения и повторите попытку

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

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

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

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

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

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