How can I change the Python that my Django project is using?
我的服务器中安装了2个版本。我使用virtualenv来安装Python 2.7。
我正在使用WSGI来部署我的项目。
1 2 | WSGIPythonPath /home/ENV/lib/python2.7/site-packages WSGIScriptAlias / /var/www/html/my_project/wsgi.py |
我的http.conf就是这样的。
python -V给出
Python 2.7.3
但在我的项目Debug窗口中,它表示Django正在使用2.6.8。我哪里错了?
更新:这是我的wsgi文件
1 2 3 4 5 6 | import os import sys sys.path.append('/var/www/html') os.environ.setdefault("DJANGO_SETTINGS_MODULE","myproject.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application() |
Python版本:2.6.8
Python路径:
[ '/home/ENV/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg',
'/home/ENV/lib/python2.7/site-packages/pip-1.1-py2.7.egg',
'/home/ENV/lib/python2.7/site-packages/Django-1.4-py2.7.egg',
'/home/ENV/lib/python2.7/site-packages',
'/usr/lib/python2.6/site-packages/pip-1.1-py2.6.egg',
'/usr/lib/python2.6/site-packages/django_transmeta-0.6.7-py2.6.egg',
'/usr/lib/python2.6/site-packages/ipython-0.13-py2.6.egg',
'/usr/lib/python2.6/site-packages/virtualenv-1.7.2-py2.6.egg',
'/usr/lib64/python26.zip',
'/usr/lib64/python2.6',
'/usr/lib64/python2.6/plat-linux2',
'/usr/lib64/python2.6/lib-tk',
'/usr/lib64/python2.6/lib-old',
'/usr/lib64/python2.6/lib-dynload',
'/usr/lib64/python2.6/site-packages',
'/usr/lib64/python2.6/site-packages/gtk-2.0',
'/usr/lib/python2.6/site-packages',
'/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info',
'/无功/网络/ HTML']
在我的httpd的error_log中:
[Tue Jul 10 20:51:29 2012] [错误] python_init:Python版本不匹配,预计'2.6.7',找到'2.6.8'。
[Tue Jul 10 20:51:29 2012] [错误] python_init:Python可执行文件找到'/ usr / bin / python'。
[Tue Jul 10 20:51:29 2012] [error] python_init:正在使用的Python路径'/usr/lib64/python26.zip:/usr/lib64/python2.6/:/usr/lib64/python2.6/plat -linux2:/usr/lib64/python2.6/lib-tk:/usr/lib64/python2.6/lib-old:/usr/lib64/python2.6/lib-dynload"。
如果我正确理解了这个问题,那么您正在尝试将应用程序的wsgi脚本配置为使用特定的virtualenv。
如果是这种情况,请查看modwsgi的文档:
http://code.google.com/p/modwsgi/wiki/VirtualEnvironments
我会尝试为你做TLDR,但它在那个链接上写得非常好,我无法做到公道。
必须针对要使用的特定Python主要/次要版本编译mod_wsgi模块。 您无法使用WSGIPythonHome强制针对Python 2.6编译的mod_wsgi使用使用Python 2.7构建的Python虚拟环境。
如果使用Buildout,您可以直接在配置文件中控制使用哪个版本的python。