Come risolvere errori di importazione durante il tentativo di distribuire Flask usando WSGI su Apache2
Domanda
Sto avendo un problema la distribuzione di un app pallone su apache2 usando WSGI. Ho inviato i log degli errori e file di configurazione di seguito. Ho provato a spostare le cose intorno, li rinomina, ecc, ma tutti mi danno un errore interno del server. Non so perché sto ottenendo l'errore di importazione. Qualsiasi ingresso / suggerimenti sono apprezzati, grazie!
Ecco il mio 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()
Ecco le basi della struttura di directory, per dare un'idea.
/flaskfirst/
/static/
/templates/
/views/
__init__.py
app.py
wsgi.py
Ecco il file apache virtualhost
<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>
Soluzione
Grazie a zarf
e damjan
su irc.freenode.org a #pocoo, erano in grado di aiutarlo ad ottenere questo risolto. Il problema era il PYTHONPATH non era corretta. Abbiamo risolto questo usando il seguente wsgi.py
import sys
sys.path.insert(0, "/sites/flaskfirst")
from app import app
application = app
Altri suggerimenti
Ho usato la soluzione per farlo funzionare ma continuava a duplicare il percorso nel sys.path (si può scrivere fuori per vedere se succede a voi) così ho fatto una piccola modifica:
import sys
flaskfirst = "/sites/flaskfirst"
if not flaskfirst in sys.path:
sys.path.insert(0, flaskfirst)
from app import app
application = app
In questo modo è incluso solo una volta ??p>