Wsgi скрипт и новейший django с Python 3,5 - PullRequest
1 голос
/ 20 апреля 2020

Мы пытаемся развернуть еще одно веб-приложение на нашем VPS. В производстве уже есть одно приложение flask, которое поддерживается интерпретатором Python 3.5.

Теперь нам нужно еще одно - django приложение. Мы настроили наш apache2 для размещения обоих (django работает на поддомене, тогда как flask находится на домене 'root'. Здесь все в порядке. Но, поскольку приложение flask использует глобальный python интерпретатор (версия 3.5), мы не можем запустить django, поскольку для него требуется версия 3.6 или новее.

Вот django скрипт WSGI:

import os
import sys

print('Python version is ... ') # 3.5

python_home = '/var/www/mysite/venv'
activate_this = python_home + '/bin/activate_this.py'
exec(   open(activate_this).read()  )
print(sys.executable) # in case of virtualenv it refers to /usr/bin/python3.5
import logging
logging.basicConfig(stream=sys.stderr)

sys.path.insert(0,"/var/www/mysite/mysite")

from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
application = get_wsgi_application()

Мы могли бы обновить наш интерпретатор до 3.6, но так как установленное flask приложение находится в производстве, наши менеджеры не могут этого делать. И это нормально, вероятно

Если мы go с virtualenv, тем не менее, оно создало виртуальную среду с существующим глобальным интерпретатор, как написано выше версии 3.5.

И вот где мы застряли сейчас. Журнал Apache2 постоянно говорит нам:

[wsgi:error] mod_wsgi (pid=10081): Target WSGI script '/var/www/mysite/mysite/wsgi.py' cannot be loaded as Python module.
[wsgi:error] mod_wsgi (pid=10081): Exception occurred processing WSGI script '/var/www/mysite/mysite/wsgi.py'.
[wsgi:error]  Traceback (most recent call last):
[wsgi:error]  File "/var/www/mysite/mysite/wsgi.py", line 18, in <module>
 [wsgi:error] from django.core.wsgi import get_wsgi_application
[wsgi:error]  ImportError: No module named 'django'

Если мы запустим python3 в терминале и затем from django.core.wsgi import get_wsgi_application мы собираемся git это:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ivan/.local/lib/python3.5/site-packages/django/core/wsgi.py", line 2, in <module>
from django.core.handlers.wsgi import WSGIHandler
File "/home/ivan/.local/lib/python3.5/site-packages/django/utils/crypto.py", line 6, in <module>
import secrets
ImportError: No module named 'secrets'

И мы предполагаем, что обновление решило бы нашу проблему, так как django требует версии 3.6 https://github.com/quolc/neural-collage/issues/2 и https://docs.djangoproject.com/en/3.0/intro/tutorial01/* 102 5 * («Этот учебник написан для Django 3.0, который поддерживает Python 3.6 и более поздние версии ...»)

Каким будет лучший шаг здесь? Пытаетесь загрузить и установить sh python 3.6 или новее и отослать к этому наш wsgi или попробовать использовать другую версию django ...?

Заранее спасибо!

...