2009-12-21 3 views
1

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

После загрузки источника mod_wsgi я бегу:

sudo apachectl -k stop 

затем

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

Я затем запустить апач снова

sudo apachectl -k start 

Когда кошка/вар/Журнал/HTTPD/error_log Я вижу:

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

[Mon Dec 21 12:27:26 2009] [warn] mod_wsgi: Runtime, используя 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:

/System/Library/Frameworks/Python.framework/Versions/2.6/Python (совместимость версии 2.6.0, текущая версия 2.6.1)

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

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

Вот выход из моей mod_wsgi конфигурации и сборки команды:


Архимеда: mod_wsgi-3,1 Awolf $ ./configure --with-питон =/USR/местные/Погреб/питон/2,6. 4/бен/питон

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

проверки для APXS .../Opt/apache2/bin/APXS

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

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

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

Архимеда: mod_wsgi-3,1 Awolf $ сделать

/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 /Library/Webserver/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 & & потрогать mod_wsgi.slo

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

   from mod_wsgi.c:135: 

/USR/местные/Cellar /python/2.6.4/include/python2.6/modsupport.h:27: warning: «PyArg_ParseTuple» - это непризнанный формат функции типа /Библиотека/Webserver/build/libtool --silent --mode = ссылка 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 установить

Пароль:

/Opt/apache2/bin/APXS -i -S LIBEXECDIR =/Opt/apache2/модули -n 'mod_wsgi' mod_wsgi.la

/Library/Вебсервер/строительство/instdso.sh SH_LIBTOOL = '/ Library/Webserver/build/libtool' mod_wsgi.la/опт/apache2/модули

/Library/Вебсервер/строить/Libtool --mode = установить CP mod_wsgi.la/Opt/apache2/модули/

CP .libs/mod_wsgi.so/Opt/apache2/модули /mod_wsgi.so

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

ф .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

ответ

0

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

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

Вот краткое описание:

Проблема была моя установка питона было сделано с помощью Homebrew. Питоны Homebrew не устанавливаются в качестве рамки OR dylib, поэтому его нельзя использовать для встраивания (например, в Apache/mod_wsgi).

Вместо этого я установил питон 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 

я смог построить версию питона 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 /modules/mod_wsgi.so: /usr/lib/libSystem.B.dylib (версия совместимости 1.0.0, текущий версия 125.0.0) /usr/local/python-2.6.4/frameworks/Python.framework/ Версии/2.6/Python (версия совместимости 2.6.0, текущая версия 2.6.0)

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

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

0

Потому что по какой-то причине некоторых рамок 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

+0

Спасибо за ответ. К сожалению, --disable-framework не влияет. (Я сначала сделал: rm /opt/apache2/modules/mod_wsgi.so; rm -rf ~/Downloads/mod_wsgi3.1/build; сделать distclean). Я проведу вашу ссылку и посмотрю, есть ли там какие-то драгоценные камни. – awolf

+0

Кстати, я использовал Homebrew для установки python в/var/local/Cellar ... – awolf

+0

Затем передайте вопрос в список рассылки mod_wsgi, чтобы можно было дважды подтвердить, что вы действительно выполняете то, что было задано, и что у него был результат, который ожидалось. Здесь слишком сложно поддерживать сложные проблемы, и вместо этого следует использовать список рассылки. –

2

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

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

... и все в порядке.

Смежные вопросы