2010-09-12 13 views
33

Ich habe ein Problem bei der Bereitstellung einer flask-App auf apache2 mithilfe von wsgi. Ich habe die Fehlerprotokolle und Konfigurationsdateien unten gepostet. Ich habe versucht, Dinge zu verschieben, sie umzubenennen, usw., aber alle geben mir einen internen Serverfehler. Nicht sicher, warum ich den Importfehler erhalte. Irgendwelche Eingaben/Vorschläge werden geschätzt, danke!So lösen Sie Importfehler beim Versuch, Flask mithilfe von WSGI auf Apache2 zu implementieren

Hier ist mein 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() 

ist hier die Grundlagen des Verzeichnisbaums, Sie zu geben eine Idee.

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

Hier ist der Apache Virtualhost-Datei ist

<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> 

Antwort

30

Dank zarf und damjan auf irc.freenode.org bei #pocoo, waren sie in der Lage mir dies behoben zu helfen zu bekommen. Das Problem war, dass PythonPath nicht korrekt war. Wir setzten diese durch die folgende wsgi.py mit

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

from app import app 
application = app 
+4

war das gleiche Problem haben. Ich habe es zu 'WSGIDaemonProcess appName python-path =/home/...' in meiner httpd Konfigurationsdatei hinzugefügt. Nicht sicher, ob das der richtige Ort ist oder nicht, aber FWIW ist eine Option. Mehr über WSGIDaemonProcess: [link] (http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess) – chris

+0

Es funktioniert super, vielen Dank! –

+0

Danke! Du hast meinen Tag gerettet!! – Roomm

5

ich Ihre Lösung verwendet, um es funktioniert, aber es hielt den Pfad in sys.path Duplizieren (man kann es schreiben, um zu sehen, ob es Ihnen passiert), so ich habe eine kleine Änderung:

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

from app import app 
application = app 

diese Weise ist es nur einmal enthalten ist