У меня есть сервер разработки для моего приложения Django, выполняющего Цент ОС 6. Я вручаю приложение с помощью Apache и mod_wsgi. Я читал много о Python по умолчанию, который идет с Центом и таким образом, я установил альтернативный Python 2.7.6 из источника и скомпилировал его с - включают - совместно использованный. Я также установил 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/