Как мне изменить, какая версия python использует mod_python
Я делаю некоторую вводную работу с django, которая пока кажется очень простой (и забавной), но я делал все это из Python 2.6, который я установил в /opt/local (RedHat 5.3), потому что python, поставляемый с redhat, был 2.4, Я создал символическую ссылку:
/usr/bin/python2.6 -> /opt/local/bin/python
и до сих пор я использовал это для всего, что касается джанго; т.е.
> python2.6 manage.py runserver
Однако, когда я пытаюсь перейти в рабочий режим, mod_python не использует правильную версию python:
Mod_python error: "PythonHandler django.core.handlers.modpython"
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 287, in HandlerDispatch
log=debug)
File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 461, in import_module
f, p, d = imp.find_module(parts[i], path)
ImportError: No module named django
У меня есть это в моем /etc/httpd/conf/httpd.conf:
<Location "/chat">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE chat.settings
PythonDebug On
PythonPath "['/www/django/chat', '/opt/local/lib/python2.6/site-packages/django/'] + sys.path"
</Location>
Итак, мой вопрос, как мне заставить mod_python искать python2.6 вместо python?
3 ответа
Вам придется пересобрать mod_python против вашей установки python2.6. Поскольку mod_python загружает Python как библиотеку, версия фиксируется во время компиляции.
Не используйте mod_python больше. mod_wsgi - рекомендуемый способ развертывания приложений Django.
Вы можете пересобрать mod_python, чтобы динамически связываться с libpython, чтобы вы могли получать обновления версий для вашего libpython, но это требует некоторой хитрости.
Вам нужно будет отредактировать скрипт настройки для mod_python следующим образом (удалить -L${PyLIBPL}):
$ diff configure.orig configure
< LDFLAGS="${LDFLAGS} -L${PyLIBPL}"
---
> LDFLAGS="${LDFLAGS}"
Тогда делай
настроить --with-python=/ путь / к /bin/python; делать; сделать установить танец.
Когда вы бежите:
ldd mod_python.so
Вы должны увидеть строку, которая выглядит следующим образом:
libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0