web-dev-qa-db-ja.com

WSGIPathが存在しないファイルを参照しています

FlaskアプリケーションをAWSにアップロードしようとしていますが、そうするとエラーが表示されます。

WSGIPathは、存在しないファイルを参照しています。

オンラインで掘り下げた後、.ebextensionsフォルダーでパスを指定する必要があることがわかりました。 .ebextensionsフォルダーがなかったため、1つ作成し、settings.configという名前のファイルに次のコードを追加しました。

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

wSGIPathはapplication.pyファイルへの正しいパスであるため、このエラーが発生する原因がわかりません。私はWSGIPathを正しく変更していますか、より良い方法がありますか、またはこれを引き起こす他の何かに問題がありますか?ありがとう。

34
Pav Sidhu

AWSにデプロイされたFlaskで発生する可能性のある設定の問題がたくさんあります。私はあなたと同様の問題に直面していました。

まず、明らかに.ebextensionsフォルダーなしでこれを行うことができます(この投稿を参照してください here 。 .ebextensionsは、以下のコメントの一部に基づいて正しいです)。代わりに、(ターミナルで).elasticbeanstalkディレクトリと同じレベルのプロジェクトに移動し、eb configコマンドを使用しました。これにより、beanstalkアプリケーションを設定するために設定できるオプションのリストが開きます。 WSGIパスが見つかるまでオプションを進みます。あなたはproject/application.pyに設定されていますが、これにはフォルダー参照が含まれず、application.pyだけが含まれている必要があります。これは、ターミナルで私のMacにどのように見えるかです(WSGIパスは下部近くにあります)。

enter image description here

そのセットを取得すると、EBはおそらく再デプロイされることに注意してください。それはいいです。聞かせて.

そのセットを取得したら、application.pyファイルに移動し、アプリapplicationを呼び出していることを確認します。たとえば、私のものは次のようになります。

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

これによりWSGIパスエラーがなくなりました。ただし、これに続いて他の問題も修正する必要がありました:-)しかし、それは別の質問です。

39
joshmcode

私は同じメッセージを持っていましたが、非常に愚かな理由で。

どうやら、レポをWindows PCにクローンし、Windowsが ".ebextensions"フォルダーを "ebextensions"に変更した(先頭の "。"をドロップ)途中で変更をプッシュバックしたようです。

そのため、マスターリポジトリでフォルダーの名前を「.ebextensions」に戻すと、すべてが完全に機能し始めました。

0

私にとって問題は、ファイル名のつづりを間違えていたことです。

私が書いた: ..ebextensions/Django.conf

必要なとき:..ebextensions/Django.config

これは、今日の私の人生の約3時間を費やしました。問題は、AWSエラーが参照する「WSGIPath」が上記のファイルではなく、いくつかの目に見えないデフォルトであるため、AWSエラーが誤解を招くということでした。

0
Chris Merck