web-dev-qa-db-fra.com

Votre WSGIPath fait référence à un fichier qui n'existe pas

J'essaie de télécharger mon application Flask sur AWS, mais je reçois une erreur en le faisant:

Votre WSGIPath fait référence à un fichier qui n'existe pas.

Après quelques recherches en ligne, j’ai trouvé que, dans le dossier .ebextensions, je devrais spécifier le chemin. Comme il n'y avait pas de dossier .ebextensions, j'en ai créé un et ajouté le code suivant à un fichier nommé settings.config:

option_settings:
  "aws:elasticbeanstalk:container:python":
    WSGIPath: project/application.py

wSGIPath est le chemin correct du fichier application.py, je ne suis donc pas sûr de ce qui déclenche cette erreur. Suis-je en train de changer le WSGIPath correctement, existe-t-il un meilleur moyen ou existe-t-il un problème avec quelque chose d'autre qui provoque cela? Merci.

28
Pav Sidhu

De nombreux problèmes de configuration peuvent survenir avec Flask déployé sur AWS. Je rencontrais un problème similaire au vôtre, je peux donc au moins vous montrer ce que j'ai fait pour résoudre l'erreur WSGI. 

Premièrement, apparemment, vous pouvez le faire sans le dossier .ebextensions (voir cet article ici . Et regardez la réponse de davetw12. Cependant, sachez que même si cela fonctionne, je ne suis pas tout à fait sûr que la conclusion de davetw12 à propos de .ebextensions correct, sur la base de certains des commentaires ci-dessous). Au lieu de cela (dans le terminal), j’ai navigué dans mon projet au même niveau que mon répertoire .elasticbeanstalk et j’ai utilisé la commande eb config. Cela ouvrira une liste d'options que vous pouvez définir pour configurer votre application beanstalk. Descendez dans les options jusqu'à trouver le chemin WSGI. Je remarque que le vôtre est défini sur project/application.py; toutefois, cela ne devrait pas inclure la référence du dossier, mais simplement application.py. Voici à quoi cela ressemble sur mon Mac dans le terminal (le chemin WSGI est proche du bas).

enter image description here

Notez qu'une fois que vous avez cet ensemble, EB va probablement se redéployer. C'est très bien. Laisse-le. 

Une fois que vous avez cet ensemble, allez dans votre fichier application.py et assurez-vous d'appeler votre application application. Par exemple, le mien ressemble à ceci: 

from flask import Flask
from flask import render_template
application = Flask(__name__)

@application.route('/')
@application.route('/index')
def index():
    return render_template('index.html',
                           title='Home')

Cela a éliminé l'erreur de chemin WSGI - bien que je doive toujours résoudre certains problèmes suivants :-) Mais c'est un ensemble de questions différent. 

35
joshmcode

J'ai eu le même message, mais pour une raison très stupide.

Apparemment, lorsque j'ai cloné le référentiel sur mon PC Windows, puis que j'ai repoussé les modifications, quelque part sur le chemin Windows a remplacé le dossier ".ebextensions" par "ebextensions" (en supprimant le ".").

Ainsi, lorsque j'ai renommé le dossier ".ebextensions" dans le référentiel principal, tout a recommencé à fonctionner parfaitement.

0