# 1 проверьте, есть ли у вас СТАРАЯ установка python, и удалите ее должным образом (включая старые переменные среды, путь ..)
# 2 Я бы порекомендовал вам, если возможно, обновить ваш python установка на последнюю 3.8.x +
# 3 ваша проблема очень распространена: ваши переменные среды НЕ установлены правильно:
- go на вкладку
Advanced
под System Properties
и щелкните Environment Variables
- Под
System Variables
создайте эти переменные: APACHE_HOME
= C: \ wamp \ bin \ apache \ apache2.4.23 (я использую WAMPSERVER
) MOD_WSGI_APACHE_ROOTDIR
= %APACHE_HOME%
(так как вы используете mod_wsgi
, проверьте официальный do c на pypi
) PYTHON_HOME
= C: \ Python37 (это зависит от вашей python установки)
- go в
User variables
и добавьте / добавьте переменные в PATH
, например: PATH
= %APACHE_HOME%\bin;%MOD_WSGI_APACHE_ROOTDIR%;%PYTHON_HOME%;%PYTHON_HOME%\Scripts;
# 4 откройте новую консоль и проверьте установку python:
# 5 создайте простое приложение flask, чтобы ything работает должным образом
# 6 для развертывания приложения на сервере Apache
, посмотрите на это flask
do c и официальный mod_wsgi
do c
- вам необходимо установить
mod_wsgi
GLOBALLY , то есть вам необходимо сначала деактивируйте вашу виртуальную среду вашего текущего активного приложения. (venv) C:\myapps\flask\helloflask>deactivate
(я использую venv
стандартную и стандартную python виртуальную среду py -m venv venv
) C:\myapps\flask\helloflask>pip install mod_wsgi
C:\myapps\flask\helloflask>pip list
# 7 configure mod_wsgi
in Apache
Server
- проверьте правильность
mod_wsgi
установлен и настроен
C:\myapps\flask\helloflask>mod_wsgi-express --help
Usage: mod_wsgi-express command [params]
Commands:
module-config
module-location
mod_wsgi-express: error: Invalid command was specified.
mod_wsgi-express module-config
- вывод команды должен быть следующим (в зависимости от ваша система и python установка):
WSGIPythonHome "c:/python37"
LoadFile "c:/python37/python37.dll"
loadmodule wsgi_module "c:/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win32.pyd"
- Скопируйте вывод указанной выше команды и вставьте его в
C:\wamp\bin\apache\apache2.4.23\conf
. Чтобы все было согласовано, найдите раздел, в котором перечислены модули, и добавьте его в самый конец списка.
# 8 создайте wsgi.py
под root вашего проекта и вставьте код (это говорит само за себя)
import os
import sys
# activate virtualenv
PROJECT = "helloflask"
# i'm using py -m venv venv
# @see: https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html
# @see: https://stackoverflow.com/questions/25020451/no-activate-this-py-file-in-venv-pyvenv
activate_this = os.path.join('C:/myapps/flask', PROJECT, 'venv/Scripts/activate_this.py')
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
BASE_DIR = os.path.join(os.path.dirname(__file__))
if BASE_DIR not in sys.path:
sys.path.append(BASE_DIR)
from helloflask import create_app
application = create_app()
# 9 Настройте виртуальный хост для приложения Flask
<VirtualHost *:80>
ServerName helloflask.local
DocumentRoot "C:/myapps/flask/helloflask"
WSGIScriptAlias / "C:/myapps/flask/helloflask/wsgi.py"
<Directory "C:/myapps/flask/helloflask">
Require all granted
</Directory>
# app = Flask(
# __name__,
# static_url_path='/public/static',
# static_folder='static'
# )
# Alias /public/static "C:/myapps/flask/helloflask/public/static"
# <Directory "C:/myapps/flask/helloflask/public/static">
# Require all granted
# </Directory>
ErrorLog "C:/wamp/logs/helloflask.error.log"
CustomLog "C:/wamp/logs/helloflask.access.log" common
</VirtualHost>
# 10 проверьте свою Apache
конфигурацию
httpd -t
если все в порядке, перезагрузите сервер Apache