如何更改python mod_python使用的版本

时间:2010-01-27 14:41:54

标签: python django apache mod-python

我正在做django的一些介绍性的工作,到目前为止看起来真的很容易(也很有趣),但是我一直在使用我在/ opt / local(RedHat 5.3)中安装的Python 2.6做这一切,因为随附的python redhat是2.4。我设置了一个符号链接:

/usr/bin/python2.6 -> /opt/local/bin/python
到目前为止,我一直在使用它来制作所有django的东西;即

> 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 个答案:

答案 0 :(得分:5)

您必须针对python2.6安装重建mod_python。由于mod_python将python加载为库,因此版本在编译时得到修复。

答案 1 :(得分:3)

不要再使用mod_python了。 mod_wsgi是现在部署Django应用程序的推荐方法。

答案 2 :(得分:2)

可以重建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;使; make install dance。

当你跑步时:

ldd mod_python.so

你应该看到一行如下:

libpython2.6.so.1.0 =&gt; /usr/lib/libpython2.6.so.1.0