使用默认python解释器而不是安装virtualenv解释器的网站

使用默认python解释器而不是安装virtualenv解释器的网站,python,django,python-2.7,centos,virtualenv,Python,Django,Python 2.7,Centos,Virtualenv,我已经在centos上安装了python 2.7 我已经创建并激活了与此解释器关联的virtualenv 我的路径如下所示: /home/ec2-user/django-venv/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin virtualenv --python=/usr/local/bin/python2.7 django-venv sour

我已经在centos上安装了python 2.7

我已经创建并激活了与此解释器关联的virtualenv

我的路径如下所示:

/home/ec2-user/django-venv/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin
virtualenv --python=/usr/local/bin/python2.7 django-venv
source django-venv/bin/activate
Alias /static/ /var/www/html/django/shared/static/

<Directory /var/www/html/django/shared/static/>
Order deny,allow
Allow from all
</Directory>


WSGIScriptAlias / /var/www/html/django/wsgi.py
WSGIPythonPath /var/www/html/django

<Directory /var/www/html/django>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
当我访问我的网站时,我发现以下错误,表明它使用的是旧版本的python:

mod_wsgi (pid=19386): Exception occurred processing WSGI script '/var/www/html/-django//wsgi.py'.
 Traceback (most recent call last):
 File "/var/www/html/-django//wsgi.py", line 23, in <module>
   from django.core.wsgi import get_wsgi_application
 File "/usr/lib/python2.6/site-packages/django/core/wsgi.py", line 2, in <module>
   from django.core.handlers.wsgi import WSGIHandler
 File "/usr/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 11, in <module>
   from django import http
 File "/usr/lib/python2.6/site-packages/django/http/__init__.py", line 2, in <module>
   from django.http.request import (HttpRequest, QueryDict,
 File "/usr/lib/python2.6/site-packages/django/http/request.py", line 11, in <module>
   from django.conf import settings
 File "/usr/lib/python2.6/site-packages/django/conf/__init__.py", line 9, in <module>
   import importlib
 ImportError: No module named importlib
然后我像这样激活它:

/home/ec2-user/django-venv/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin
virtualenv --python=/usr/local/bin/python2.7 django-venv
source django-venv/bin/activate
Alias /static/ /var/www/html/django/shared/static/

<Directory /var/www/html/django/shared/static/>
Order deny,allow
Allow from all
</Directory>


WSGIScriptAlias / /var/www/html/django/wsgi.py
WSGIPythonPath /var/www/html/django

<Directory /var/www/html/django>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
当我启动“whichpython”时,我得到以下输出:

~/django-venv/bin/python
我的apache httpd.conf条目如下所示:

/home/ec2-user/django-venv/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin
virtualenv --python=/usr/local/bin/python2.7 django-venv
source django-venv/bin/activate
Alias /static/ /var/www/html/django/shared/static/

<Directory /var/www/html/django/shared/static/>
Order deny,allow
Allow from all
</Directory>


WSGIScriptAlias / /var/www/html/django/wsgi.py
WSGIPythonPath /var/www/html/django

<Directory /var/www/html/django>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
Alias/static//var/www/html/django/shared/static/
命令拒绝,允许
通融
WSGIScriptAlias//var/www/html/django/wsgi.py
WSGIPythonPath/var/www/html/django
命令拒绝,允许
通融
但是我仍然得到上面的错误,它使用的是旧的python版本2.6


如何让我的站点使用这个指向正确位置的virtualenv?

如果您只是在shell中运行它,那么它只会影响shell会话,甚至不会在登录之间持续,更不用说影响任何系统范围的服务,如Apache了

通常,您会在wsgi.py中放入一些内容:

activate_this = '/path/to/virtualenv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

我只是使用由
manage.py startproject
生成的
wsgi.py
文件,然后在我的httpd conf文件中放入类似的内容:

WSGIScriptAlias / /full/path/to/wsgi.py
WSGIPythonPath /full/path/to/django/project:/full/path/to/django-venv/lib/python2.7/site-packages

官方文档。

激活虚拟环境后,哪个python的输出是什么?@mbatchkarov it outputs~/django venv/bin/python。我已经更新了上面的内容,你是如何为WSGI服务器激活它的?@DanielRoseman我从上面的httpd.conf添加了我的WSGI信息。是否需要其他信息来指向virtualenv?是否有更标准的virtualenv与django合作的方式?激活_this.py包含什么内容?谢谢你的帮助。