virtualenv中的Django继续使用错误的Python

时间:2015-05-21 14:15:15

标签: 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 / curator并运行:

django-admin startproject cmscore

然后我按照Django Apache mod_wsgi说明操作,最后在我的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文档提到WSGIPythonPath指令,但是当我使用它时,我收到WSGIPythonPath cannot occur within <VirtualHost> section的错误。

通过这种配置,我得到了一个500错误(很明显,我还没有添加很多设置)但不是我期望的设置。我得到了这个(IP被我掏空):

[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] mod_wsgi (pid=21802): Target WSGI script '/srv/www/curator/cmscore/cmscore/wsgi.py' cannot be loaded as Python module.
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] mod_wsgi (pid=21802): Exception occurred processing WSGI script '/srv/www/curator/cmscore/cmscore/wsgi.py'.
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] Traceback (most recent call last):
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx]   File "/srv/www/curator/cmscore/cmscore/wsgi.py", line 15, in <module>
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx]     from django.core.wsgi import get_wsgi_application
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx]   File "/srv/ve/.virtualenvs/curator/lib/python2.7/site-packages/django/__init__.py", line 1, in <module>
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx]     from django.utils.version import get_version
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx]   File "/srv/ve/.virtualenvs/curator/lib/python2.7/site-packages/django/utils/version.py", line 7, in <module>
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx]     from django.utils.lru_cache import lru_cache
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx]   File "/srv/ve/.virtualenvs/curator/lib/python2.7/site-packages/django/utils/lru_cache.py", line 28
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx]      fasttypes = {int, str, frozenset, type(None)},
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx]                      ^
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx]  SyntaxError: invalid syntax

因此,这似乎是一个错误,当Django 1.8被早期版本的Python使用而不是2.7时。为了调试,我把它扔到我的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的技巧!),包括指向我在manage.py文件中正确的Python安装的shebangs ,但我找不到任何方法让这个工作。

我知道我在这里遗漏了一些非常明显的东西,但我对此视而不见,有人可以帮忙吗?

0 个答案:

没有答案