обновление python для сайта django, работающего на Apache & wsgi - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь переключить сайт django с работы в python 3.6 на python 3.7 в Ubuntu 16.04.Для этого я создал новую среду по тому же пути, что и старый, и переустановил все зависимости.

Сервер Apache, однако, выходит из строя со следующей ошибкой:

Fatal Python error: Py_Initialize: Unable to get the locale encoding ModuleNotFoundError: No module named 'encodings'

Какая ошибка, после небольшого исследования, кажется, связана с конфигурацией WSGI, согласно:

Например, вы не можете заставить mod_wsgi использовать виртуальную среду Python, созданную с использованием Python 3.5, когда mod_wsgi изначально был скомпилирован для Python 2.7.Это потому, что библиотека Python для установки Python, с которой она была изначально скомпилирована, напрямую связана с модулем mod_wsgi.Другими словами, Python встроен в mod_wsgi.Когда используется mod_wsgi, он не запускает программу Python из командной строки для запуска интерпретатора и, следовательно, почему вы не можете заставить его использовать другую установку Python.

from: https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html

благодаря: Django Apache wsgi меняет версию Python

Операция, описанная в приведенном выше примере, закончилась простым стиранием настроек и начинанием с нуля.Это кажется мне немного экстремальным, так как мне кажется, что я должен просто переустановить / переконфигурировать mod-wsgi для работы с python3.7

В этом смысле я удалил и переустановилоба, libapache2-mod-wsgi-py3 и mod_wsgi.Первый, однако, просто перенастраивается на 3.6 автоматически, как показано ниже:

root@server1:~# dpkg -S mod_wsgi
libapache2-mod-wsgi-py3: /usr/lib/apache2/modules/mod_wsgi.so
libapache2-mod-wsgi-py3: /usr/lib/apache2/modules/mod_wsgi.so-3.6

и установка mod_wsgi завершается неудачно с:

RuntimeError: The 'apxs' command appears not to be installed or is not executable. 

Как я могу пересобрать wsgi с python 3.7

...