ImportError: Нет модуля с именем django.core.wsgi для Apache в CentOS 7

Я развертываю приложение Django на Apache в CentOS 7. Мой проект находится в виртуальной среде, созданной с помощью pipenv shell. Django установлен только в этой виртуальной среде, а не глобально. Ниже приведено расположение этой виртуальной среды (как в случае, когда я запускаю pipenv shell):

/home/centos/proj/my_app

Структура папок моего приложения, содержащая wsgi.py, выглядит следующим образом:

/home/centos/proj/my_app/my_app/my_app/wsgi.py

При развертывании я вижу следующую ошибку в журнале Apache:

[Thu Oct 14 18:02:47.599843 2021] [:error] [pid 2999] [remote xx.x.xx.xx:116] mod_wsgi (pid=2999): Target WSGI script '/home/centos/proj/my_app/my_app/my_app/wsgi.py' cannot be loaded as Python module.
[Thu Oct 14 18:02:47.600490 2021] [:error] [pid 2999] [remote xx.x.xx.xx:116] mod_wsgi (pid=2999): Exception occurred processing WSGI script '/home/centos/proj/my_app/my_app/my_app/wsgi.py'.
[Thu Oct 14 18:02:47.600510 2021] [:error] [pid 2999] [remote xx.x.xx.xx:116] Traceback (most recent call last):
[Thu Oct 14 18:02:47.600528 2021] [:error] [pid 2999] [remote xx.x.xx.xx:116]   File "/home/centos/proj/my_app/my_app/my_app/wsgi.py", line 15, in <module>
[Thu Oct 14 18:02:47.600610 2021] [:error] [pid 2999] [remote xx.x.xx.xx:116]     from django.core.wsgi import get_wsgi_application
[Thu Oct 14 18:02:47.600626 2021] [:error] [pid 2999] [remote xx.x.xx.xx:116] ImportError: No module named django.core.wsgi

А в файле /var/log/httpd/error_log я вижу следующее:

[Thu Oct 14 18:02:37.970658 2021] [mpm_prefork:notice] [pid 2998] AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips mod_wsgi/3.4 Python/2.7.5 configured -- resuming normal operations

В этой теме здесь описана похожая проблема, но для uwsgi. В ней говорилось, что поскольку Django установлен локально в виртуальном окружении, PYTHONPATH поэтому неверно глобально.

Глобально, я установил $PATH следующим образом:

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/pgsql/bin:/home/centos/.local/bin:/home/centos/bin:/usr/local/bin:/usr/bin:/home/centos/.local/bin:/home/centos/bin:/usr/local/bin:/usr/bin:/home/centos/.local/share/virtualenvs/my_app-8BiokhAz/lib/python3.9/site-packages:/home/centos/.local/bin:/home/centos/bin:/usr/local/bin:/usr/bin:/home/centos/.local/share/virtualenvs/my_app-8BiokhAz/lib/python3.9/site-packagesi:/home/centos/.local/share/virtualenvs/my_app-8BiokhAz/bin

У меня установлен только Python 3.9 (и стандартный Python 2.7). Других версий Python нет. Поэтому единственной доступной командой является /usr/local/bin/python3, которая относится к Python 3.9.

В wsgi.py это содержание:

import os, sys

sys.path.append('/home/centos/proj/my_app/')
sys.path.append('/home/centos/.local/share/virtualenvs/my_app-8BiokhAz/lib/python3.9/site-packages')

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_app.settings')

application = get_wsgi_application()

Итак, похоже, что mod_wsgi работает с Python 2.7.5. Как мне перевести его на Python 3.9? Я установил mod_wsgi с помощью следующей команды:

sudo yum install mod_wsgi
Вернуться на верх