SyntaxError в django с Apache и wsgi

Это файл журнала ошибок httpd при запуске приложения django.

File "/var/www/html/mailqenv/lib/python3.4/site-packages/celery/utils/functional.py", line 11, in <module>
[Tue Nov 28 21:26:18.349280 2017] [:error] [pid 3665] [remote 41.187.94.200:84]     from kombu.utils.functional import (
[Tue Nov 28 21:26:18.349296 2017] [:error] [pid 3665] [remote 41.187.94.200:84]   File "/var/www/html/mailqenv/lib/python3.4/site-packages/kombu/utils/__init__.py", line 5, in <module>
[Tue Nov 28 21:26:18.349322 2017] [:error] [pid 3665] [remote 41.187.94.200:84]     from .compat import fileno, maybe_fileno, nested, register_after_fork
[Tue Nov 28 21:26:18.349333 2017] [:error] [pid 3665] [remote 41.187.94.200:84]   File "/var/www/html/mailqenv/lib/python3.4/site-packages/kombu/utils/compat.py", line 29, in <module>
[Tue Nov 28 21:26:18.349350 2017] [:error] [pid 3665] [remote 41.187.94.200:84]     from typing import NamedTuple
[Tue Nov 28 21:26:18.349400 2017] [:error] [pid 3665] [remote 41.187.94.200:84]   File "/var/www/html/mailqenv/lib/python3.4/site-packages/typing.py", line 133
[Tue Nov 28 21:26:18.349408 2017] [:error] [pid 3665] [remote 41.187.94.200:84]     def __new__(cls, name, bases, namespace, *, _root=False):
[Tue Nov 28 21:26:18.349412 2017] [:error] [pid 3665] [remote 41.187.94.200:84]                                               ^
[Tue Nov 28 21:26:18.349416 2017] [:error] [pid 3665] [remote 41.187.94.200:84] SyntaxError: invalid syntax

Конфигурационный файл httpd:

Alias /static /var/www/html/mailqueue/static
<Directory /var/www/html/mailqueue/static>
    Require all granted
</Directory>

<Directory /var/www/html/mailqueue/mailqueue>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>


<Directory /var/www/html/mailqueue>
        Order deny,allow
        Allow from all
</Directory>

WSGIDaemonProcess mailqueue python-path=/var/www/html/mailqueue:/var/www/html/mailqenv/lib/python3.4/site-packages
WSGIProcessGroup mailqueue
WSGIScriptAlias / /var/www/html/mailqueue/mailqueue/wsgi.py`

ОС › PRETTY_NAME=Red Hat Enterprise Linux Server 7.2 (Maipo)

Но если я активировал свою виртуальную среду и запустил с python manage.py runserver 0.0.0.0:8000, она работает хорошо, и все хорошо, так в чем здесь проблема, это совместимость с версией Python

Обновлять ----------

Я попробовал ответить на этот вопрос о stackoverflow и зря


person A.Raouf    schedule 28.11.2017    source источник
comment
Может быть версия Python, какая-то проблема с библиотекой или что-то еще. Но что я могу вам сказать, так это то, что когда вы используете manage.py runserver, вы вообще не используете Apache и WSGI, поэтому один может работать там, где другой нет.   -  person manassehkatz-Moving 2 Codidact    schedule 28.11.2017
comment
от ввода import NamedTuple присутствует, начиная с python 3.5. Вот ссылка для справки: stackoverflow.com/questions/34269772/type -hints-in-namedtuple   -  person Akash Wankhede    schedule 28.11.2017
comment
Возможный дубликат Установите mod_wsgi на Ubuntu с Python 3.6, Apache 2.4 и Django 1.11   -  person ben author    schedule 28.11.2017
comment
Я отредактировал вопрос о том, что моя ОС - Redhat 7, и я пробую предложенные вами решения.   -  person A.Raouf    schedule 28.11.2017


Ответы (1)


Эта ошибка возникает из-за того, что ваш mod_wsgi скомпилирован для Python 2.7, но вы указали его на виртуальную среду Python и код Python 3.X. Синтаксис только ключевого слова не существует в Python 2.7.

Вам нужно установить mod_wsgi, который был скомпилирован для версии Python 3.X, которую вы хотите использовать. Вы не можете заставить mod_wsgi, скомпилированный для одной версии, использовать виртуальную среду Python для другой версии Python.

Вы можете использовать чеки в:

чтобы проверить, для какой версии Python скомпилирован ваш mod_wsgi.

Также просмотрите:

для рекомендуемого способа использования виртуальной среды с mod_wsgi. В настоящее время вы не используете рекомендуемый способ.

person Graham Dumpleton    schedule 30.11.2017