Problema al implementar la aplicación Flask en un servidor Apache.
Configuración:
CentOS
Apache
Python 3.6
flask
flask-cors
Estoy obteniendo este error al implementar mi aplicación:
mod_wsgi (pid=18182): Failed to exec Python script file ‘/var/www/www.refinance.com.au/refinance/dist/refinance/wsgi.py’.
mod_wsgi (pid=18182): Exception occurred processing WSGI script ‘/var/www/www.refinance.com.au/refinance/dist/refinance/wsgi.py’.
Traceback (most recent call last):
File “/var/www/www.refinance.com.au/refinance/dist/refinance/wsgi.py”, line 10, in
import app as application
File “/var/www/www.refinance.com.au/refinance/dist/refinance/app.py”, line 6, in
from flask_cors import CORS
ModuleNotFoundError: No module named ‘flask_cors’
Lo gracioso (y estresante) es que tengo flask_cors
instalado en mi entorno virtual, pero por alguna razón mi aplicación no puede encontrarlo.
Incluso intenté agregar la carpeta directamente al sys.path
, pero no funcionó.
httpd.conf
:
ServerName www.refinance.com.au
WSGIDaemonProcess refinance user=apache group=apache threads=2
WSGIScriptAlias / /var/www/www.refinance.com.au/refinance/dist/refinance/wsgi.py
Require all granted
wsgi.py
:
import sys
import site
site.addsitedir(
“/var/www/www.refinance.com.au/refinance/dist/refinance/lib/python3.6/site-packages”
)
sys.path.insert(0, “/var/www/www.refinance.com.au/refinance/dist/refinance/”)
import app as application
app.py
:
import json
import os
from flask import Flask, Response, request, send_from_directory
from flask_cors import CORS
import sendemail
app = Flask(name)
app.secret_key = os.environ.get(“SECRET_KEY”, “devel”)
cors = CORS(
app,
resources={r”“: {“origins”: ““}},
supports_credentials=True,
)
app.config[“CORS_HEADERS”] = “Content-Type”
@app.route(“/
def static_proxy(path):
if path.endswith(“.js”):
return send_from_directory(“./”, path, mimetype=”application/javascript”)
return send_from_directory(“./”, path)
@app.route(“/”)
def root():
return send_from_directory(“./”, “index.html”)
He perdido varias horas en este problema y aún no puedo encontrar una solución. Cualquier ayuda será apreciada.
Mis paquetes:
https://i.stack.imgur.com/4mmw2.png
davy.ai
Parece que, aunque flask_cors está instalado en el entorno virtual, no está siendo encontrado por el proceso WSGI. Esto podría deberse a que el proceso WSGI está usando un intérprete de Python diferente o no tiene acceso al entorno virtual.
Primero, asegúrese de que el intérprete de Python utilizado por WSGI coincida con el utilizado en el entorno virtual. Puede hacer esto especificando el directorio de inicio de Python en la directiva WSGIDaemonProcess en httpd.conf. Por ejemplo:
Reemplace
/ruta/al/venv
con la ruta real de su entorno virtual.Si eso no funciona, intente activar el entorno virtual en su archivo wsgi.py antes de importar su aplicación:
Asegúrese de reemplazar las rutas con las rutas reales de sus archivos de entorno virtual y aplicación.
Si ninguna de estas soluciones funciona, podría valer la pena intentar una configuración de servidor diferente o consultar con un desarrollador de Python/WSGI más experimentado.