您的WSGIPath指的是不存在的文件

Pav*_*dhu 37 amazon-web-services flask amazon-elastic-beanstalk

我正在尝试将我的Flask应用程序上传到AWS,但是这样做会收到错误:

您的WSGIPath指的是不存在的文件.

在网上挖掘后我发现在.ebextensions文件夹中,我应该指定路径.没有.ebextensions文件夹,因此我创建了一个并将以下代码添加到名为settings.config的文件中:

option_settings:
  "aws:elasticbeanstalk:container:python":
    WSGIPath: project/application.py
Run Code Online (Sandbox Code Playgroud)

WSGIPath是application.py文件的正确路径,所以我不确定是什么引发了这个错误.我是否正确地更改了WSGIPath,是否有更好的方法或是否存在导致此情况发生的其他问题?谢谢.

jos*_*ode 40

在AWS上部署Flask可能会出现很多配置问题.我遇到了与你类似的问题,所以我至少可以告诉你我为解决WSGI错误所做的工作.

首先,显然你可以做到这一点,而不.ebextensions文件夹(看到这个帖子在这里,并期待在davetw12的答案.但是,应注意的是,虽然这工作,我不能完全肯定davetw12的约.ebextensions结论是正确的基础上,下面的一些评论).相反,(在终端中),我导航到与我的.elasticbeanstalk目录处于同一级别的项目并使用该命令eb config.这将打开一个可以设置的选项列表来配置beanstalk应用程序.深入了解选项,直到找到WSGI路径.我注意到你有你的设置project/application.py,但是,这不应该包括文件夹引用,只是application.py.以下是它在终端上我的Mac上的样子(WSGI路径靠近底部).

在此输入图像描述

请注意,一旦获得该设置,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')
Run Code Online (Sandbox Code Playgroud)

这消除了WSGI路径错误 - 虽然我仍然需要解决其后的一些其他问题:-)但这是一组不同的问题.

  • @HaveAGuess谢谢.我没有时间对此进行大量研究,所以我刚刚更新了我的答案,说我发布的内容确实有效,但并不是说ebextensions已经过时了.这就是我现在所有的时间. (2认同)

TRi*_*iNE 11

如果这里有人通过 AWS 控制台 (GUI) 进行操作,请修改配置并将您的脚本名称放在 WSGIPath 中,如下所示。

在此处输入图片说明

如果你是新人,我会给予奖励提示。

  • 您也应该匹配脚本名称和 Flask 对象
  • 常见错误:在压缩源代码时,您需要选择文件并压缩,而不是文件夹。(确保您在 zip 的根目录中有 .py)
from flask import Flask
application = Flask(__name__)

@application.route("/")
def hello():
    return "Hello"

if __name__ == "__main__":
    application.run()
Run Code Online (Sandbox Code Playgroud)