Comment résoudre les erreurs d'importation tout en essayant de déployer en utilisant Flask WSGI sur Apache2

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

  •  02-10-2019
  •  | 
  •  

Question

J'ai un problème de déployer une application sur apache2 flacon en utilisant wsgi. J'ai posté les journaux d'erreurs et les fichiers de configuration ci-dessous. Je l'ai essayé de déplacer les choses, les renommer, etc, mais tout me donner une erreur de serveur interne. Je ne sais pas pourquoi je reçois l'erreur d'importation. Toute entrée / suggestions sont appréciés, merci!

Voici mon 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()

Voici les bases de l'arborescence, pour vous donner une idée.

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

Voici le fichier 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>
Était-ce utile?

La solution

Merci à zarf et damjan sur irc.freenode.org à #pocoo, ils ont pu me aider à obtenir que ce soit réglé. Le problème était le PythonPath était pas correct. Nous avons fixé cela en utilisant le wsgi.py suivant

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

from app import app
application = app

Autres conseils

J'ai utilisé votre solution pour le faire fonctionner, mais il a continué de dupliquer le chemin dans sys.path (vous pouvez l'écrire pour voir si cela vous arrive) donc je fait une petite modification:

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

from app import app
application = app

De cette façon, il est inclus qu'une seule fois

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top