2016-12-03 10 views
1

Я установил приложение Django на сервере Ubuntu с Apache2.4.7 и настроил его на использование py3.5.2 из виртуальной среды.Django Apache wsgi изменяет версию python

Однако, из того, что я вижу в ошибках, оно начинается с 3,5 и по умолчанию равно 3.4.

Пожалуйста, объясните, почему это происходит:

/var/www/venv/lib/python3.5/site-packages 
/usr/lib/python3.4 

Смотрите полную ошибку ниже:

SyntaxError at/

invalid syntax (forms.py, line 2) 

Request Method:  GET 
Request URL: http://intranet.example.com/ 
Django Version:  1.10.1 
Exception Type:  SyntaxError 
Exception Value:  

invalid syntax (forms.py, line 2) 

Exception Location:  /var/www/intranet/formater/views.py in <module>, line 7 
Python Executable: /usr/bin/python3 
Python Version:  3.4.3 
Python Path:  

['/var/www/intranet', 
'/var/www/venv/lib/python3.5/site-packages', 
'/usr/lib/python3.4', 
'/usr/lib/python3.4/plat-x86_64-linux-gnu', 
'/usr/lib/python3.4/lib-dynload', 
'/usr/local/lib/python3.4/dist-packages', 
'/usr/lib/python3/dist-packages', 
'/var/www/intranet', 
'/var/www/intranet/venv/lib/python3.5/site-packages'] 

Вот мой apache2.conf файл:

WSGIScriptAlias//var/www/intranet/intranet/wsgi.py 
#WSGIPythonPath /var/www/intranet/:/var/www/intranet/venv/lib/python3.5/site-packages 

WSGIDaemonProcess intranet.example.com python-path=/var/www/intranet:/var/www/venv/lib/python3.5/site-packages 
WSGIProcessGroup intranet.example.com 

<Directory /var/www/intranet/intranet> 
<Files wsgi.py> 
Order deny,allow 
Allow from all 
</Files> 
</Directory> 

Что я делаю неправильно Вот?

+0

Возможный дубликат [Несколько приложений Django с использованием virtualenv на Apache 2 на Ubuntu 11] (http://stackoverflow.com/questions/9991461/multiple-django-applications-using-virtualenv-on-apache-2-on- ubuntu-11) – user312016

+0

Не дубликат. Этот вопрос касается нескольких приложений Django на одном сервере. У меня только одно приложение. Моя проблема - это версия python, запускающая мое приложение. – rwms

ответ

3

Модуль mod_wsgi для Apache скомпилирован для конкретной версии Python. Вы не можете запустить его с использованием другой версии Python, указав ее в виртуальной среде Python для другой версии Python. Это разминировали упоминается в документации mod_wsgi об использовании Python виртуальных сред на:

Единственный способ вы можете mod_wsgi работать как Python 3.5, если он был оригинален, скомпилированные для Python 3.4, заключается в том, чтобы удалить эту версию mod_wsgi и построить/установить версию mod_wsgi, скомпилированную для Python 3.5.

0

Источником проблемы был ответ Грэма Дамплтона. Я просто хочу дать дополнительную информацию, если это поможет кому-то, сталкивающемуся с той же проблемой, что и я.

Нет официального репо для Python 3.5.2 на сервере Ubuntu 14.04. Вместо использования некоторого неподдерживаемого репо, такого как this one, я скомпилировал Python 3.5.2 из исходного кода, используя этот очень простой учебник here. После прыжка через множество обручей я не смог установить mod_wsgi для Python 3.5.2 из-за другого пути к библиотеке.

Уже потратив на это слишком много времени, я удалил все: Python, Apache, библиотеки и установил все с нуля, используя Python 3.4 на этот раз.

Официально поддерживается Ubuntu 14.04, и для моего проекта я не заметил проблем с совместимостью.

Так вот мой список, для чего установить: из склонный: python3, python3-пип, apache2, apache2-DEV, libapache2-мод-WSGI-PY3 и от ПУМ: Django, mod-wsgi, virtualenv (если вы планируете использовать venv).

Затем просто настройте «/etc/apache2/apache.conf», запустите «apache2ctl configtest» и перезапустите службу. Дополнительную помощь см. В этом руководстве here.

 Смежные вопросы

  • Нет связанных вопросов^_^