我正在做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?
答案 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