Django, обслуживаемый apache: как установить PYTHONPATH?
У меня есть приложение Django, которое отлично работает при обслуживании командой "python manage.py runserver". Теперь я хочу, чтобы приложение обслуживалось Apache, и у меня возникли некоторые проблемы. Одна из проблем заключается в том, что я почему-то не могу не установить PYTHONPATH. Я попробовал один из следующих двух способов установить его в apache conf файле:
WSGIPythonHome /data/anaconda3/envs/partsdb
WSGIPythonPath /data/partsdb/partsdb
или
WSGIDaemonProcess partsdb python-home=/data/anaconda3/envs/partsdb python-path=/data/partsdb/partsdb
Но я получаю ошибки, говорящие, что PYTHONPATH = (не установлен). Ниже приведено полное сообщение об ошибке от сервера apache.
Current thread 0x00007fb4880ad940 (most recent call first):
<no Python frame>
Python path configuration:
PYTHONHOME = '/data/anaconda3/envs/partsdb'
PYTHONPATH = (not set)
program name = 'python3'
isolated = 0
environment = 1
user site = 1
import site = 1
sys._base_executable = '/usr/bin/python3'
sys.base_prefix = '/data/anaconda3/envs/partsdb'
sys.base_exec_prefix = '/data/anaconda3/envs/partsdb'
sys.platlibdir = 'lib64'
sys.executable = '/usr/bin/python3'
sys.prefix = '/data/anaconda3/envs/partsdb'
sys.exec_prefix = '/data/anaconda3/envs/partsdb'
sys.path = [
'/data/anaconda3/envs/partsdb/lib64/python38.zip',
'/data/anaconda3/envs/partsdb/lib64/python3.8',
'/data/anaconda3/envs/partsdb/lib64/python3.8/lib-dynload',
]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'
Когда я запустил python (как /usr/bin/python3, так и /data/anaconda3/envs/partsdb/bin/python3) из командной строки, я не получил ошибок от кода import encodings.
Сервер apache продолжал работать, и когда я попытался подключиться к приложению с помощью браузера, я получил следующую ошибку примерно через 60 секунд.
Gateway Timeout
The gateway did not receive a timely response from the upstream server or application.
Также я заметил эти две строки sys._base_executable = '/usr/bin/python3' и sys.executable = '/usr/bin/python3'. Почему /usr/bin/python3, а не /data/anaconda3/envs/partsdb/bin/python3? Хотя оба являются python3, их версии различны (одна 3.6.8, а другая 3.8.13.
).У кого-нибудь есть идеи, что может быть причиной? Спасибо.