Я использую Python 3.7.1 и Apache 2.4.38 в Windows 10. Я установил виртуальную среду, содержащую Django 2.2.5 и mod_wsgi 4.6.5, установленные через «pip». Внутри "httpd.conf" я установил WSGIPythonHome, указывающий на корень моей виртуальной среды, согласно нескольким инструкциям. Но когда я запускаю Apache, происходит сбой: «Нет модуля с именем« encodings »». Apache, кажется, нуждается в доступе к общесистемному Python.
Я получил общесистемный Python в: "C: \ Program Files \ Python3.7.1". Виртуальная среда находится в: "D: \ PROJ \ PYTHON \ VEnv \ django".
Это то, что я добавил в "httpd.conf":
LoadModule wsgi_module "D:/PROJ/PYTHON/VEnv/django/Lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIScriptAlias / "D:/PROJ/PYTHON/VEnv/django/Shipkaliev/wsgi.py"
WSGIPythonHome "D:/PROJ/PYTHON/VEnv/django"
WSGIPythonPath "D:/PROJ/PYTHON/VEnv/django/Shipkaliev"
<Directory "D:/PROJ/PYTHON/VEnv/django/Shipkaliev">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
В соответствии с: https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html и: https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/modwsgi/ это то, как это должно быть установлено.
Таким образом, с этой конфигурацией Apache не может найти все собственные модули Python, такие как "кодировки", "кодеки "," io "и т. д., не присутствующие в виртуальной среде.
Когда я закомментирую директиву" WSGIPythonHome ", Apache инициализирует Python, но затем, если я пытаюсь импортировать Django в" wsgi.py ""script, он не может его найти.
Способ, которым я все заработал, заключается в том, что я изменил" WSGIPythonHome ", чтобы он указывал на общесистемный Python, и добавил" site-packages "виртуальной среды к пути:
WSGIPythonHome "C:/Program Files/Python3.7.1"
WSGIPythonPath "D:/PROJ/PYTHON/VEnv/django/Lib/site-packages;D:/PROJ/PYTHON/VEnv/django/Shipkaliev"
Но это не так, как это должно работать. Какой смысл "WSGIPythonHome"? Я делаю что-то неправильно? И мое решение приемлемо?
Большое спасибо!