Назад | Перейти на главную страницу

Cent OS + Apache2 + ошибка mod_wsgi

У меня есть сервер разработки для моего приложения Django под управлением Cent OS 6. Я обслуживаю приложение, используя Apache и mod_wsgi. Я много читал о Python по умолчанию, который поставляется с Cent, поэтому я установил альтернативный Python 2.7.6 из исходников и скомпилировал его с --enable-shared. Я также установил mod_wsgi из исходного кода и указал на новую установку Python.

Однако каждый раз, когда я пытаюсь запустить приложение, я получаю следующую ошибку от lxml:

..lib/python2.7/site-packages/lxml/objectify.so: undefined symbol: PyUnicodeUCS2_Format

Еще одна примечательная черта ошибки заключается в том, что используемый исполняемый файл Python не является желаемым:

Python Executable:  /usr/bin/python

вместо / home / jenkins / local / bin / python

Я искал это часами, но безрезультатно.

Как я могу это решить ?? Заранее спасибо.

Вы пытаетесь использовать версию lxml, скомпилированную для одной установки Python, для другой установки Python. Две установки Python не совпадают. В частности, один lxml был скомпилирован с 16-битной шириной символа Unicode, указанной при компиляции самого Python. Используемая среда выполнения Python была скомпилирована для 32 символов, но с шириной символа Unicode. Следовательно, он потерпит неудачу.

Вам нужно проверить, какую разделяемую библиотеку Python mod_wsgi фактически использует во время выполнения, и является ли она правильной. Чтобы узнать, как это сделать, см .:

Если он выбирает неправильную библиотеку, mod_wsgi необходимо перекомпилировать для правильной установки Python, но где LD_RUN_PATH переменная среды устанавливается, как описано в документе.

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

И последнее, что вы можете сделать, это убедиться, что вы создаете собственную установку Python с 32-битными символами Unicode. Когда вы собираете Python из исходного кода, по умолчанию используется 16 бит. В Linux собственные установки Python дистрибутивов всегда компилируются для 32-битного Unicode, поэтому вы столкнулись с этой проблемой, когда начали смешивать установки Python.

В apache установите путь к исполняемому файлу python с помощью директивы WSGIPythonHome:

WSGIPythonHome /home/jenkins/local/bin/