Пытаюсь опубликовать на сервере(vh30.timeweb.ru) проект на Django 2.
Django 2 отличается от Django первых версий тем, что не поддерживает Python2, по сему делать виртуальное окружение на python3.
1. Создаю виртуальное окружение и ставлю в него django. Так как нужен Python 3, выполняю virtualenv.py при помощи интерпретатора python3 .
# wget https://github.com/pypa/virtualenv/archive/15.1.0.tar.gz 100%[===============>] 1,865,011 2.12MB/s in 0.8s # tar xf 15.1.0.tar.gz # cd project_dir # python3 ../virtualenv-15.1.0/virtualenv.py env Using base prefix '/usr' New python executable in /home/w/account/site.ru/env/bin/python3 Also creating executable in /home/w/account/site.ru/env/bin/python Installing setuptools, pip, wheel...done. # source env/bin/activate (env)# pip install django Collecting django Using cached Django-2.0.1-py3-none-any.whl Collecting pytz (from django) Using cached pytz-2017.3-py2.py3-none-any.whl Installing collected packages: pytz, django Successfully installed django-2.0.1 pytz-2017.3
2. Создаю index.wsgi с таким содержимым (на самом деле копирую с небольшими корректировками из рабочих хостящихся рядом проектов на django 1.9. На них все работает)
import os import sys sys.path.append('/home/w/account/site.ru/public_html/') sys.path.append('/home/w/account/site.ru/env/lib/python3.4/site-packages/') os.environ['DJANGO_SETTINGS_MODULE'] = 'webcams.settings' import django django.setup() import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
3. Создаю такой вот .htaccess
Options +ExecCGI AddHandler wsgi-script .wsgi RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /index.wsgi/$1 [QSA,PT,L] AddDefaultCharset utf-8 AddType 'text/html; charset=utf-8' .html .htm .shtml
... и получаю ошибку 500. В error_log вижу следующее:
site.ru [Thu Feb 01 02:25:36 2018] [error] [pid 38537] mod_wsgi.c(6443): [client 82.199.101.130:49020] mod_wsgi (pid=38537): Target WSGI script '/home/w/account/site.ru/public_html/index.wsgi' cannot be loaded as Python module. site.ru [Thu Feb 01 02:25:36 2018] [error] [pid 38537] mod_wsgi.c(2037): [client 82.199.101.130:49020] mod_wsgi (pid=38537): Exception occurred processing WSGI script '/home/w/account/site.ru/public_html/index.wsgi'. site.ru [Thu Feb 01 02:25:36 2018] [error] [pid 38537] mod_wsgi.c(1599): [client 82.199.101.130:49020] Traceback (most recent call last): site.ru [Thu Feb 01 02:25:36 2018] [error] [pid 38537] mod_wsgi.c(1599): [client 82.199.101.130:49020] File "/home/w/account/site.ru/public_html/index.wsgi", line 9, in <module> site.ru [Thu Feb 01 02:25:36 2018] [error] [pid 38537] mod_wsgi.c(1599): [client 82.199.101.130:49020] import django site.ru [Thu Feb 01 02:25:36 2018] [error] [pid 38537] mod_wsgi.c(1599): [client 82.199.101.130:49020] File "/home/w/account/site.ru/env/lib/python3.4/site-packages/django/__init__.py", line 1, in <module> site.ru [Thu Feb 01 02:25:36 2018] [error] [pid 38537] mod_wsgi.c(1599): [client 82.199.101.130:49020] from django.utils.version import get_version site.ru [Thu Feb 01 02:25:36 2018] [error] [pid 38537] mod_wsgi.c(1599): [client 82.199.101.130:49020] File "/home/w/account/site.ru/env/lib/python3.4/site-packages/django/utils/version.py", line 61, in <module> site.ru [Thu Feb 01 02:25:36 2018] [error] [pid 38537] mod_wsgi.c(1599): [client 82.199.101.130:49020] @functools.lru_cache() site.ru [Thu Feb 01 02:25:36 2018] [error] [pid 38537] mod_wsgi.c(1599): [client 82.199.101.130:49020] AttributeError: 'module' object has no attribute 'lru_cache'
Помогите пожалуйста развернуть проект!
Ответы (6)
На первый взгляд все ок должно быть