¿Cómo resolver errores de importación al tratar de implementar frasco utilizando WSGI en Apache 2

StackOverflow https://stackoverflow.com/questions/3696606

  •  02-10-2019
  •  | 
  •  

Pregunta

Estoy teniendo un problema el despliegue de una aplicación frasco de apache2 usando wsgi. He publicado los registros de errores y archivos de configuración de abajo. He intentado mover las cosas, cambiar el nombre de ellos, etc, sino que todos me dará un error interno del servidor. No estoy seguro de por qué estoy recibiendo el error de importación. Cualquier entrada / sugerencias son apreciados, gracias!

Aquí está mi apache error.log

[Sun Sep 12 20:47:59 2010] [error] [client] mod_wsgi (pid=9753): Target WSGI script '/sites/flaskfirst/wsgi.py' cannot be loaded as Python module.
[Sun Sep 12 20:47:59 2010] [error] [client] mod_wsgi (pid=9753): Exception occurred processing WSGI script '/sites/flaskfirst/wsgi.py'.
[Sun Sep 12 20:47:59 2010] [error] [client] Traceback (most recent call last):
[Sun Sep 12 20:47:59 2010] [error] [client]   File "/sites/flaskfirst/wsgi.py", line 1, in <module>
[Sun Sep 12 20:47:59 2010] [error] [client]     from app import app as application
[Sun Sep 12 20:47:59 2010] [error] [client] ImportError: No module named app

wsgi.py

# This is wsgi.py
from app import app as application

app.py

# This is app.py
from flask import Flask, render_template
import settings

app = Flask(__name__)
app.debug = settings.DEBUG

from views.homepage import *
from views.events import *
from views.submit import *
from views.feed import *

if __name__ == "__main__":
    app.run()

Aquí está lo básico de la estructura de directorios, para darle una idea.

/flaskfirst/
    /static/
    /templates/
    /views/
    __init__.py
    app.py
    wsgi.py

Aquí está el archivo host virtual Apache

<VirtualHost *:80>
        ServerAdmin sreustle@gmail.com
        ServerName crath.org
        DocumentRoot /sites/flaskfirst

        # WSGI Settings
        WSGIScriptAlias / /sites/flaskfirst/wsgi.py
        WSGIDaemonProcess flaskfirst user=sreustle group=general processes=1 threads=10
        WSGIProcessGroup flaskfirst

        # Static Directories
        Alias /static /sites/flaskfirst/static/
        <Location "/static">
                SetHandler None
        </Location>

</VirtualHost>
¿Fue útil?

Solución

Gracias a zarf y damjan en irc.freenode.org en #pocoo, ellos fueron capaces de ayudar a conseguir que esto esté arreglado. El problema era el PYTHONPATH no era correcta. Hemos fijado esto usando la siguiente wsgi.py

import sys
sys.path.insert(0, "/sites/flaskfirst")

from app import app
application = app

Otros consejos

He utilizado su solución para que funcione pero mantenía la duplicación de la ruta en sys.path (se puede escribir hacia fuera para ver si le pasa a usted) así que hice una pequeña modificación:

import sys
flaskfirst = "/sites/flaskfirst"
if not flaskfirst in sys.path:
    sys.path.insert(0, flaskfirst)

from app import app
application = app

De esta manera se incluyó solamente una vez

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top