【发布时间】:2015-09-03 00:00:09
【问题描述】:
我有 1 个使用服务器默认 Python (2.6.6) 的 Django 项目,我有一个想要使用 Python 2.7 的新项目,并将其放在虚拟环境中。
这是错误:
[client 64.136.119.142] Traceback (most recent call last):
[Wed Jun 17 00:00:32 2015] [error] [client 64.136.119.142] File "/var/www/venv/googleclicks/googleclicks/wsgi.py", line 12, in <module>
[Wed Jun 17 00:00:32 2015] [error] [client 64.136.119.142] from django.core.wsgi import get_wsgi_application
[Wed Jun 17 00:00:32 2015] [error] [client 64.136.119.142] File "/var/www/venv/lib/python2.7/site-packages/django/__init__.py", line 1, in <module>
[Wed Jun 17 00:00:32 2015] [error] [client 64.136.119.142] from django.utils.version import get_version
[Wed Jun 17 00:00:32 2015] [error] [client 64.136.119.142] File "/var/www/venv/lib/python2.7/site-packages/django/utils/version.py", line 7, in <module>
[Wed Jun 17 00:00:32 2015] [error] [client 64.136.119.142] from django.utils.lru_cache import lru_cache
[Wed Jun 17 00:00:32 2015] [error] [client 64.136.119.142] File "/var/www/venv/lib/python2.7/site-packages/django/utils/lru_cache.py", line 28
[Wed Jun 17 00:00:32 2015] [error] [client 64.136.119.142] fasttypes = {int, str, frozenset, type(None)},
[Wed Jun 17 00:00:32 2015] [error] [client 64.136.119.142] ^
[Wed Jun 17 00:00:32 2015] [error] [client 64.136.119.142] SyntaxError: invalid syntax
httpd.conf:
<VirtualHost *:80>
ServerName www.mydomain.com
ErrorLog /var/mail/django-error-log
Alias /static/ /var/www/django/t/tUrls/static/
WSGIScriptAlias /t /var/www/django/t/t/wsgi.py
WSGIScriptAlias /gclicks /var/www/venv/gc/gc/wsgi.py process-group=gclicks
WSGIDaemonProcess gclicks python-path=/var/www/venv/gc:/var/www/venv/lib/python2.7/site-packages
#WSGIPythonPath /var/www/django/t:/var/www/venv/gc:/var/www/venv/lib/python2.7/site-packages
<Location /gclicks>
WSGIProcessGroup gclicks
</Location>
# WSGIDaemonProcess gclicks python-path=/var/www/django/t:/var/www/venv/gc:/var/www/venv/lib/python2.7/site-packages
# WSGIProcessGroup gclicks
<Directory /var/www/django>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
WSGIPythonPath /var/www/django/t:/var/www/venv/gc:/var/www/venv/lib/python2.7/site-packages
#WSGIPythonHome /var/www/virtualenv-2.7
WSGISocketPrefix /var/run/wsgi
【问题讨论】:
-
您为什么不能简单地升级您的 2.6 站点以使用 2.7?次要 Python 版本之间没有向后不兼容。
-
@DanielRoseman 因为每个人都告诉我不要更改服务器默认值
-
不要更改服务器默认值 - 这是肯定的。但是,您可以将 Python 2.7 安装到备用位置(例如 /usr/local/python27)并针对该版本的 Python 创建 virtualenv。然后,点 mod_wsgi 来使用你的 virtualenv。
-
@DanielRoseman 哎呀,我读错了你的评论。是的,我可以将旧网站升级到 2.7。
标签: python django apache virtualenv mod-wsgi