另一个 Flask/AWS WSGIPath 错误,具体是:WSGIPath 指的是一个不存在的文件

Posted

技术标签:

【中文标题】另一个 Flask/AWS WSGIPath 错误,具体是:WSGIPath 指的是一个不存在的文件【英文标题】:Another Flask/AWS WSGIPath Error, specifically: WSGIPath refers to a file that does not exist 【发布时间】:2016-12-08 10:24:06 【问题描述】:

我正在尝试使用 AWS EB (Amazon Web Services Elastic Beanstalk) 部署我的 Flask Web 应用程序。不幸的是,我遇到了以下错误:

Your WSGIPath refers to a file that does not exist.

我查看了here 和here 的答案;遵循第一个建议并没有改变任何东西(仍然收到相同的错误)。作为参考,此修复涉及创建具有以下内容的 .ebextensions/ethanWebsite-env.config 文件,其中 ethanWebsite-env 是我的环境的名称。

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

第二个链接建议使用 EB CLI 命令eb config 修改WSGIPath 环境变量。我已经使用 AWS Web GUI(我的环境的配置选项卡的软件配置窗格)完成了这项工作;它已经设置为application.py,但我将其重置为无济于事。我在尝试eb config 时得到的错误可能更具启发性。

sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file

同样,如果我使用eb config ethanWebsite-env 指定要配置的环境,我会收到同样的错误。

这是我的应用程序的结构。

ethan_website/
    application.py
    connect4.py
    isPrime.py
    requirements.txt
    .ebextensions/
        ethanWebsite-env.config
    .elasticbeanstalk/
        config.yml
    static/
        (various .css and .js files)
    templates/
        (various .html files)

我在主项目级别省略了一个flask/ 文件夹,其中包含很多子文件夹,这似乎是配置python 环境,似乎并不相关。

如果有人对可能是什么问题有任何见解,请告诉我。我的 eb config 错误向我表明配置文件存在问题,但我不确定从哪里开始/查看我已经添加的文件。谢谢!

【问题讨论】:

我能够通过在新环境中重新部署我的应用程序来解决此问题,严格按照here 概述的 EB CLI。不过,我仍然希望我对为什么我以前的方法会失败有所了解。当我使用eb config 时,我仍然会遇到同样的错误。 从哪里得到这个错误:你的 WSGIPath 引用了一个不存在的文件。? 【参考方案1】:

我不知道这是否解决了你的问题,但我遇到了同样的问题,我遇到了this article。它解释了 Elastic Beanstalk 的烧瓶应用程序中的默认应用程序对象名称应称为 application 而不是 app

因此,例如,在您的主应用程序中,您应该进行以下更改(如果您还没有):

app = Flask(__name__)

application = Flask(__name__)

【讨论】:

【参考方案2】:

在这个问题上花了几个星期之后。我发现上述问题可以有两种解决方案:

    flask 服务器文件中的默认对象名称应为application 运行函数将类似于application.run(host='0.0.0.0'),文件名也应为 application.py 或者您可以将 eb config 中的 WSGI PATH 更改为名称你的文件。我更喜欢 application.py。

    即使在尝试了第一个解决方案之后,如果它不起作用,请将 WSGI PATH 更改为 folder_name/application.py。 希望对您有所帮助。

【讨论】:

以上是关于另一个 Flask/AWS WSGIPath 错误,具体是:WSGIPath 指的是一个不存在的文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS Elasticbeanstalk 部署 Django 应用程序时出现 WSGIPath 错误

AWS WSGIPath 引用了一个不存在的文件

Elastic Beanstalk 未检测到我的 WSGIPath - ModuleNotFoundError

Django AWS Elastic Beanstalk WSGIPath 引用了一个不存在的文件

在 AWS Elastic Beanstalk 上设置 Django:未找到 WSGIPath

将 Django 部署到 AWS - WSGIPath 引用不存在的文件