2010-09-12 6 views
33

Tengo un problema al implementar una aplicación de matraz en apache2 usando wsgi. He publicado los registros de errores y los archivos de configuración a continuación. He intentado mover cosas, cambiarles el nombre, etc., pero todas me dan un error interno del servidor. No estoy seguro de por qué recibo el error de importación. Cualquier aporte/sugerencia es apreciada, ¡gracias!Cómo resolver errores de importación al intentar implementar Flask usando WSGI en Apache2

Aquí es 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 de host virtual Apache

<VirtualHost *:80> 
     ServerAdmin [email protected] 
     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> 

Respuesta

30

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 que PythonPath no era correcto. Hemos fijado esto usando la siguiente wsgi.py

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

from app import app 
application = app 
+4

estaba teniendo el mismo problema. Lo agregué a 'WSGIDaemonProcess appName python-path =/home/...' en mi archivo de configuración httpd. No estoy seguro si ese es el lugar correcto o no, pero FWIW es una opción. Más sobre WSGIDaemonProcess: [link] (http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess) – chris

+0

¡Está funcionando de maravilla, muchas gracias! –

+0

¡Gracias! ¡¡Salvaste mi día!! – Roomm

5

utilicé su solución para que funcione pero mantuvimos la duplicación de la ruta en sys.path (se puede escribir hacia fuera para ver si le pasa a usted) por lo 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 

esa manera que sólo ha incluido una vez

Cuestiones relacionadas