Проблема при развертывании приложения Django
Я получаю "Внутреннюю ошибку сервера" при попытке получить доступ к веб-сайту 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
Спасибо
2 ответа
Хотя вы говорите, что используете Python 2.7, эта ошибка указывает, что на самом деле вы используете 2.6, так как литералы набора были введены только в 2.7.
Проблема в том, что mod_wsgi скомпилирован с определенной версией Python, которая в вашем случае идет с Centos 6.5. Вам нужно будет перекомпилировать его для версии 2.7 или найти уже скомпилированную версию.
Вам нужно начать использовать virtualenv для вашего проекта django. Вот хороший учебник. Для временного решения вы можете просто запустить django с python 2.7, используя python2.7 manage.py runserver
, Тем не менее, настоятельно рекомендуется заглянуть в virtualenv. Делает жизнь намного проще.
Что касается того, чтобы заставить mod_wsgi использовать python 2.7, вам нужно перекомпилировать его. Для этого просто скачайте исходный код и выполните:
$ ./configure
$ make
$ sudo make install
У них есть краткое руководство по установке, доступ к которому можно получить здесь.