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

时间:2016-08-02 21:45:55

标签: python amazon-web-services flask

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

Your WSGIPath refers to a file that does not exist.

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

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

第二个链接建议使用EB CLI命令eb config来修改WSGIPath环境变量。我已经使用AWS Web GUI(我的环境的Configuration选项卡的Software Configuration窗格)完成了此操作;它已经设置为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配置中的错误向我建议配置文件存在问题,但我不知道从哪里开始/超越我已经添加的那个。谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

app = Flask(__name__)

application = Flask(__name__)

答案 1 :(得分:0)

在此问题上花了几个星期之后。我发现可以为上述问题提供2种解决方案:

  1. flask服务器文件中的默认对象名称应为application,运行功能应类似于application.run(host='0.0.0.0'),文件名也应为application.py或您可以在eb中更改WSGI PATH配置为文件名。我希望有application.py。

  2. 即使尝试了第一个解决方案后仍然无法解决问题,也应将WSGI PATH更改为folder_name/application.py。 希望对您有所帮助。