es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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(“/“, methods=[“GET”])
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

Tags:  , , , ,

Answer

  1. Avatar for 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:

    WSGIDaemonProcess refinance user=apache group=apache threads=2 python-home=/ruta/al/venv
    

    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:

    import sys
    import site
    
    site.addsitedir("/var/www/www.refinance.com.au/refinance/dist/refinance/lib/python3.6/site-packages")
    
    # activar el entorno virtual
    activate_this = "/var/www/www.refinance.com.au/refinance/dist/refinance/bin/activate_this.py"
    with open(activate_this) as file_:
        exec(file_.read(), dict(__file__=activate_this))
    
    sys.path.insert(0, "/var/www/www.refinance.com.au/refinance/dist/refinance/")
    from app import application
    

    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.

Comments are closed.