J'ai changé mon application en cours d'exécution avec flask et python2.7 d'une solution autonome à flask avec apache et mod_wsgi.Flask avec mod_wsgi - Impossible d'appeler mes modules
Mon application Flask (app.py) inclut des classes qui se trouvent dans le répertoire situé sous mon répertoire app (../).
Voici mon app.wsgi:
#!/usr/bin/python import sys import logging logging.basicConfig(stream=sys.stderr) sys.stdout = sys.stderr project_home = '/opt/appdir/Application/myapp' project_web = '/opt/appdir/Application/myapp/web' if project_home not in sys.path: sys.path = [project_home] + sys.path if project_web not in sys.path: sys.path = [project_web] + sys.path from app import app application = app
Avant ma configuration mod_wsgi mon appel principal dans le app.py ressemble à ça:
# Main if __name__ == '__main__' : from os import sys, path sys.path.append(path.dirname(path.dirname(path.abspath(__file__)))) from logger import Logger from main import Main from configReader import ConfigReader print "Calling flask" from threadhandler import ThreadHandler ca = ConfigReader() app.run(host="0.0.0.0", threaded=True)
Je suis parfaitement capable de charger mes classes dans le répertoire ci-dessous. Après avoir exécuté l'application avec mod_wsgi je reçois l'erreur suivante: nom global \ « Main \ » est pas défini
Alors, comment dois-je changer mon application que cela ici travail:
@app.route("/") def test(): main = Main("test") return main.responseMessage()
Merci pour votre réponse.
Meilleures salutations Joern
Avez-vous essayé de 'importer Main'in votre application wsgi? – saitam
Rien sous cette vérification '' __main__'' ne sera exécuté sous mod_wsgi car votre script n'est pas exécuté en tant que script principal. Tout ce qui met en place '' sys.path'' doit être fait dans '' app.wsgi'' ou mieux encore dans la configuration Apache pour mod_wsgi. Tout le reste, comme l'importation de modules, doit toujours être fait en haut de tout fichier de code qui en a besoin. –