Как мне изменить, какая версия 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

Другие вопросы по тегам