Почему я не могу установить Python 2.7 под Centos 5.5? - PullRequest
2 голосов
/ 04 августа 2011

Centos 5.5 поставляется с установленным Python 2.4, и мне нужен Python 2.7 для проекта. Я скачал исходный код, запустил, удалил и попытался снова с парой альтернативных сборок:

./configure && make && make install
./configure && make && make altinstall
./configure --prefix=/opt/python2.7 && make && make install 

Я приступил к установке setuptools и virtualenv (убедитесь, что ссылаетесь на правильную версию python, никаких символических ссылок или чего-то еще странного). Построил virtualenv для проекта, все правильно настроил для моего сервера, и мой последний шаг - сборка mod_wsgi 3.3 из исходного кода для apache 2.2.1 с использованием

./configure --with-apxs=/path/to/apxs --with-python=/path/to/py2.7 && make && make install

Все три раза, запуск Python, локальное тестирование проекта и т. Д. Работали нормально.

НО после установки mod_wsgi я продолжал получать глупые ошибки импорта (не могу импортировать os, sys, site и т. Д.) С моим приложением wsgi.

Я запустил короткий тестовый скрипт sys.path, описанный на полпути вниз по странице в официальных документах https://code.google.com/p/modwsgi/wiki/InstallationIssues, и я получил следующий вывод в моих лог-файлах:

sys.path = [ '/correct/path/to/virtualenv/py2.7/lib64/python2.4/', ... ]

Начиная с рекомендаций code.google.com/p/modwsgi, я попробовал несколько разных взглядов на мои WSGIPythonHome и WSGIPythonPath ... все варианты

WSGIPythonHome=/path/to/virtualenv/ and ../bin/ and ../bin/python2.7,
WSGIPythonPath=../lib and ../lib/python2.7 and ../lib/python2.7/site-packages.  

WSGI и Apache, похоже, не являются проблемами здесь. Это ошибка с тем, как я скомпилировал python2.7, или, возможно, ошибка с тем, как настроены мои easy_install и virtualenv?

1 Ответ

1 голос
/ 05 августа 2011

Прежде всего, вы не указываете, что вы скомпилировали Python с --enable-shared. Если это не по умолчанию для этой версии Python, это нежелательно. Согласно:

http://code.google.com/p/modwsgi/wiki/InstallationIssues#Lack_Of_Python_Shared_Library

Вы можете проверить, был ли установлен Python с общей библиотекой или нет.

После компиляции mod_wsgi посмотрите, откуда mod_wsgi.so берет libpython2.7.so из.

Далее, убедитесь, что в вашей системе нет нескольких разных libpython2.7.so из-за нескольких попыток установки Python. У вас действительно должен быть только один.

Если libpython2.7.so не находится в стандартном пути поиска библиотеки, то местоположение этого каталога должно быть встроено в mod_wsgi при компиляции. Если он установлен в /opt/python2.7, вы должны сделать:

./configure --with-python=/opt/python2.7/bin/python --with-apxs=/path/to/apxs
LD_RUN_PATH=/opt/python2.7/lib make
make install

Затем вы должны выяснить, что такое sys.prefix для этой установки Python, запустив вызов Python из командной строки.

import sys
print sys.prefix

Какое значение должно быть указано с помощью WSGIPythonHome. Это должно быть /opt/python2.7 для этого места. WSGIPythonHome требуется только потому, что вы установили альтернативный префикс общесистемного Python.

Вы не должны добавлять каталоги установки Python непосредственно в sys.path или WSGIPythonPath.

Получите столько работы с программой WSGI hello world. Никаких виртуальных сред, Django или высокоуровневых инфраструктур.

Обратите внимание, что установка Python должна быть доступна для чтения пользователю, под которым работает Apache.

...