Как мне изменить, какую версию Python использует mod_python - PullRequest
2 голосов
/ 27 января 2010

Я делаю некоторую вводную работу с 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 ]

5 голосов
/ 27 января 2010

Вам придется пересобрать mod_python против вашей установки python2.6. Поскольку mod_python загружает python как библиотеку, версия фиксируется во время компиляции.

3 голосов
/ 27 января 2010

Больше не используйте mod_python. mod_wsgi - рекомендуемый способ развертывания приложений Django сейчас.

2 голосов
/ 28 января 2010

Вы можете перестроить mod_python для динамического связывания с libpython, чтобы вы могли получать обновления версий для вашего libpython, но это требует некоторой хитрости.

Вам нужно будет отредактировать скрипт настройки для mod_python следующим образом (удалить -L $ {PyLIBPL}):

$ diff  configure.orig configure 
<   LDFLAGS="${LDFLAGS} -L${PyLIBPL}"
---
>   LDFLAGS="${LDFLAGS}"

Тогда сделай

configure --with-python = / path / to / bin / python; делать; сделать установить танец.

При запуске:

ldd mod_python.so

вы должны увидеть строку, которая выглядит следующим образом:

libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0

...