1

当我尝试访问 django 网站时出现“内部服务器错误”。我正在使用 Django 1.8、Python 2.7.10、centos 6.5 和 apache。

在 apache 日志中,我收到以下错误:

mod_wsgi (pid=23866): Target WSGI script '/abc/abc/abc/wsgi.py' cannot be loaded as Python module.
[Mon May 25 14:40:47 2015] [error] [client xyz] mod_wsgi (pid=23866): Exception occurred processing WSGI script '/abc/abc/abc/wsgi.py'.
[Mon May 25 14:40:47 2015] [error] [client xyz] Traceback (most recent call last):
[Mon May 25 14:40:47 2015] [error] [client xyz]   File "/abc/abc/abc/wsgi.py", line 12, in <module>
[Mon May 25 14:40:47 2015] [error] [client xyz]     from django.core.wsgi import get_wsgi_application
[Mon May 25 14:40:47 2015] [error] [client xyz]   File "/abc/lib/python2.7/site-packages/django/__init__.py", line 1, in <module>
[Mon May 25 14:40:47 2015] [error] [client xyz]     from django.utils.version import get_version
[Mon May 25 14:40:47 2015] [error] [client xyz]   File "/abc/lib/python2.7/site-packages/django/utils/version.py", line 7, in <module>
[Mon May 25 14:40:47 2015] [error] [client xyz]     from django.utils.lru_cache import lru_cache
[Mon May 25 14:40:47 2015] [error] [client xyz]   File "/abc/lib/python2.7/site-packages/django/utils/lru_cache.py", line 28
[Mon May 25 14:40:47 2015] [error] [client xyz]      fasttypes = {int, str, frozenset, type(None)},
[Mon May 25 14:40:47 2015] [error] [client xyz]                      ^
[Mon May 25 14:40:47 2015] [error] [client xyz]  SyntaxError: invalid syntax

谢谢

4

2 回答 2

7

尽管您说您正在运行 Python 2.7,但此错误表明您实际上使用的是 2.6,因为集合文字仅在 2.7 中引入。

问题是 mod_wsgi 是针对特定的 Python 版本编译的,在您的情况下,它是 Centos 6.5 附带的版本。您需要为 2.7 重新编译它,或者找到一个已经针对它编译的版本。

于 2015-05-25T19:57:56.630 回答
0

您需要开始为您的 django 项目使用 virtualenv。这是一个很好的教程。对于临时解决方案,您可以使用 python 2.7 运行 django python2.7 manage.py runserver。但是,强烈建议查看 virtualenv。让生活更轻松。

关于使 mod_wsgi 使用 python 2.7,您需要重新编译它。为此,只需下载源代码并执行:

$ ./configure
$ make
$ sudo make install

他们有一个快速安装指南,您可以在此处访问。

于 2015-05-26T04:14:18.503 回答