mod_wsgi на Snow Leopard Python версии не соответствует - PullRequest
1 голос
/ 21 декабря 2009

Я пытаюсь запустить mod_wsgi 3.1 под Apache 2.2.14, используя установку Python не по умолчанию в Mac OS X 10.6.

После загрузки исходного кода mod_wsgi я запускаю:

sudo apachectl -k stop

тогда

./configure --with-python=/usr/local/Cellar/python/2.6.4/bin/python
make
sudo make install

Затем я снова запускаю apache

sudo apachectl -k start

Когда я cat / var / log / httpd / error_log, я вижу:

[Пн. 21 дек. 12:27:26 2009] [warn] mod_wsgi: Скомпилировано для Python / 2.6.4.

[Пн. 21 дек. 12:27:26 2009] [warn] mod_wsgi: Среда выполнения с использованием Python / 2.6.1.

[Пн. 21 дек. 12:27:26 2009] [извещение] Apache / 2.2.14 (Unix) DAV / 2 mod_wsgi / 3.1 Python / 2.6.1 настроен - возобновление нормальной работы

Когда я запускаю otool -L mod_wsgi.so, это выглядит так:

mod_wsgi.so:

/ Система / Библиотека / Каркасы / Python.framework / Версии / 2.6 / Python (версия совместимости 2.6.0, текущая версия 2.6.1)

/ usr / lib / libSystem.B.dylib (совместимость версия 1.0.0, текущая версия 125.0.0)

Что дает? Почему это связано с системной платформой?

Вот вывод моих команд настройки и сборки mod_wsgi:


Archimedes: mod_wsgi-3.1 awolf $ ./configure --with-python = / usr / local / Cellar / python / 2.6.4 / bin / python

проверка на apxs2 ... нет

проверка на наличие apxs ... / opt / apache2 / bin / apxs

проверка версии Apache ... 2.2.14

настройка: создание ./config.status

config.status: создание Makefile

Архимед: mod_wsgi-3.1 awolf $ make

/ opt / apache2 / bin / apxs -c -I / usr / local / Cellar / python / 2.6.4 / include / python2.6 -DNDEBUG -Wc, '- arch x86_64' mod_wsgi.c -L / usr /local/Cellar/python/2.6.4/lib -L / usr / local / Cellar / python / 2.6.4 / lib / python2.6 / config -arch x86_64 -lpython2.6 -ldl / Библиотека / Веб-сервер / build / libtool --silent --mode = compile gcc -prefer-pic -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp -g -O2 -I / opt / apache2 / include -I / opt / apache2 / include -I / opt / apache2 / include -arch x86_64 -I / usr / local / Cellar / python / 2.6.4 / include / python2.6 -DNDEBUG -c -o mod_wsgi.lo mod_wsgi.c && touch mod_wsgi.slo

В файле, включенном в /usr/local/Cellar/python/2.6.4/include/python2.6/Python.h:125,

             from mod_wsgi.c:135:

/ usr / local / Cellar / python / 2.6.4 / include / python2.6 / modsupport.h: 27: предупреждение: PyArg_ParseTuple - это нераспознанный тип функции формата / Библиотека / Веб-сервер / build / libtool --silent --mode = link gcc -o mod_wsgi.la -rpath / opt / apache2 / modules -module -avoid-версия mod_wsgi.lo -L / usr / local / Cellar / python / 2.6.4 / lib -L / usr / local / Cellar / python / 2.6.4 / lib / python2.6 / config -arch x86_64 -lpython2.6 -ldl

Архимед: mod_wsgi-3.1 awolf $ sudo make install

Пароль:

/ opt / apache2 / bin / apxs -i -S LIBEXECDIR = / opt / apache2 / modules -n 'mod_wsgi' mod_wsgi.la

/ Библиотека / Веб-сервер / build / instdso.sh SH_LIBTOOL = '/ Библиотека / Веб-сервер / build / libtool' mod_wsgi.la / opt / apache2 / modules

/ Библиотека / Веб-сервер / build / libtool --mode = установить cp mod_wsgi.la / opt / apache2 / modules /

cp .libs / mod_wsgi.so /opt/apache2/modules/mod_wsgi.so

cp .libs / mod_wsgi.lai /opt/apache2/modules/mod_wsgi.la

cp .libs / mod_wsgi.a /opt/apache2/modules/mod_wsgi.a

chmod 644 /opt/apache2/modules/mod_wsgi.a

ranlib /opt/apache2/modules/mod_wsgi.a

Ответы [ 3 ]

2 голосов
/ 13 октября 2011

Это сообщение старое, но все равно появляется в поисках по mac + homebrew + python, поэтому я подумал, что добавлю немного полезной информации У меня была проблема как OP, просто с другим модулем (uwsgi). Я узнал, что вам не нужно отказываться от доморощенного. На самом деле, Homebrew может установить python как фреймворк; Вы просто должны сказать это, чтобы сделать это:

% brew uninstall python
Uninstalling /usr/local/Cellar/python/2.7.2...
% brew install python --universal --framework

... и все хорошо.

0 голосов
/ 24 декабря 2009

Грэм помог мне решить эту проблему в списке рассылки mod_wsgi.

http://groups.google.com/group/modwsgi/browse_thread/thread/4046eaf290a49b1e/ae14888450de39f5#ae14888450de39f5

Вот резюме:

Проблема была в том, что моя установка python была сделана через Homebrew. Python Homebrew не устанавливается как фреймворк ИЛИ установка dylib, поэтому его нельзя использовать для встраивания (например, в Apache / mod_wsgi).

Вместо этого я установил python 2.6.4 из источника:

./configure --prefix=/usr/local/python-2.6.4 --enable-framework=/usr/local/python-2.6.4/frameworks --enable-universalsdk=/ MACOSX_DEPLOYMENT_TARGET=10.5 --with-universal-archs=3-way
make
sudo make install

Мне удалось собрать версию Python 2.6.4, которую я мог затем собрать mod_wsgi с:

./configure --with-python=/usr/local/python-2.6.4/bin/python
make
sudo make install

Для подтверждения:

otool -L /opt/apache2/modules/ mod_wsgi.so 

/ опт / apache2 / модули / mod_wsgi.so: /usr/lib/libSystem.B.dylib (совместимость версия 1.0.0, текущая версия 125.0.0) /usr/local/python-2.6.4/frameworks/Python.framework/Versions/2.6/Python (версия совместимости 2.6.0, текущая версия 2.6.0)

показывает, что python теперь использует платформу 2.6.4, а не системную. Когда я запускаю apache, я больше не получаю предупреждения о несоответствии версий.

Я заново установил django, psycopg2 и т. Д. В мою новую установку на python, и все работает, как чудо. В очередной раз благодарим за помощь!

0 голосов
/ 22 декабря 2009

Поскольку по какой-то причине некоторые платформы Python устанавливаются из исходного кода, обычно MacPorts, что-то не так с информацией, встроенной в среду Python, и путь поиска исполняемого файла во время выполнения задан неправильно. В результате вместо этого он использует платформу Python из / System / Library.

Когда вы запускаете 'configure' для mod_wsgi, добавьте дополнительную опцию '--disable-framework'. Например:

./configure --with-python=/usr/local/Cellar/python/2.6.4/bin/python --disable-framework

Это изменит связь библиотеки / фреймворка Python и может решить проблему.

Подробнее см. Исправления ошибок (1) и (2) в:

http://code.google.com/p/modwsgi/wiki/ChangesInVersion0206

...