virtualenv内部的Django一直在使用错误的Python
在我的一生中,我无法找到一种简单的方法来使用Django 1.8、Python 2.7.3和virtualenv正确配置(Linode Debian 6)服务器。以下是我采取的步骤:virtualenv内部的Django一直在使用错误的Python,python,django,apache,python-2.7,virtualenv,Python,Django,Apache,Python 2.7,Virtualenv,在我的一生中,我无法找到一种简单的方法来使用Django 1.8、Python 2.7.3和virtualenv正确配置(Linode Debian 6)服务器。以下是我采取的步骤: mkvirtualenv --python=/usr/bin/python2.7 curator 这将在/srv/ve/.virtualenvs/curator下为我创建一个VirtualEnv 现在我运行: pip install django Django 1.8已成功安装。然后,我切换到/srv/www
mkvirtualenv --python=/usr/bin/python2.7 curator
这将在/srv/ve/.virtualenvs/curator下为我创建一个VirtualEnv
现在我运行:
pip install django
Django 1.8已成功安装。然后,我切换到/srv/www/curator并运行:
django-admin startproject cmscore
然后,我按照说明操作,在我的sites available目录下得到一个Apache conf文件,如下所示:
<VirtualHost *:80>
ServerName cms.example.com
ServerAlias cms.example.com cms.example2.com
ServerAdmin errors@example.com
DocumentRoot /srv/www/curator/public_html
WSGIDaemonProcess cms.example.com python-path=/srv/ve/.virtualenvs/curator/bin/python:/srv/ve/.virtualenvs/curator/lib/python2.7/site-packages
WSGIProcessGroup cms.example.com
WSGIScriptAlias / /srv/www/curator/cmscore/cmscore/wsgi.py
<Directory /srv/www/curator/cmscore/cmscore>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
Alias /robots.txt /srv/www/curator/public_html/robots.txt
Alias /favicon.ico /srv/www/curator/public_html/favicon.ico
Alias /css /srv/www/curator/public_html/css
Alias /js /srv/www/curator/public_html/js
Alias /img /srv/www/curator/public_html/img
Alias /static/admin /srv/www/curator/public_html/admin
Alias /static /srv/www/curator/public_html/static
Alias /media /srv/www/curator/public_html/media
ErrorLog /srv/www/curator/logs/error.log
CustomLog /srv/www/curator/logs/access.log combined
</VirtualHost>
因此,当Django 1.8被早于2.7的Python版本使用时,这似乎是一个错误。为了进行调试,我将其放入wsgi.py文件的顶部:
import sys
activate_this = '/srv/ve/.virtualenvs/curator/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
sys.stderr.write(sys.version)
在我的Apache错误日志中,我看到:
2.6.6 (r266:84292, Dec 27 2010, 00:18:12)
我已经尝试了我能想到的每一个技巧(在完全相同的服务器上使用Django 1.6和Python 2.7的现有virtualenvs的技巧!),包括指向manage.py文件中正确Python安装的shebangs,但我找不到任何方法来实现这一点
我知道我在这里遗漏了一些非常明显的东西,但我对此视而不见,有人能帮忙吗?哪个python版本是默认版本?mod_wsgi编译的Python版本是什么?2.6.6是我在virtualenv之外运行
Python
时得到的,所以这是默认版本。最终,我希望我可以扔掉整个服务器,然后重新启动,但由于大量生产站点已经在其上运行,这真的是不可能的(而且还有大量的开销)。我完全理解这种挫折感。我想mod_wsgi
是用2.6.6编译的吧mod_wsgi
需要重新编译到您想要使用的Python版本。/srv/www/curator/cmscore/cmscore/wsgi.py
-它有执行权限吗?@w听起来很有可能,我猜是因为其他Django项目似乎在调用2.7,它以前已经工作过,但它们使用的是Django 1.6,所以也许他们“只是幸运”
2.6.6 (r266:84292, Dec 27 2010, 00:18:12)