我尝试使用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(我的环境的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配置中的错误向我建议配置文件存在问题,但我不知道从哪里开始/超越我已经添加的那个。谢谢!
答案 0 :(得分:2)
我不知道这是否能解决您的问题,但我遇到了同样的问题而且我遇到了this article。它解释了Elastic Beanstalk烧瓶应用程序中的默认应用程序对象名称应该被称为application
而不是app
。
例如,在您的主应用程序中,您应该进行以下更改(如果您还没有):
app = Flask(__name__)
到
application = Flask(__name__)
答案 1 :(得分:0)
在此问题上花了几个星期之后。我发现可以为上述问题提供2种解决方案:
flask服务器文件中的默认对象名称应为application
,运行功能应类似于application.run(host='0.0.0.0')
,文件名也应为application.py或您可以在eb中更改WSGI PATH配置为文件名。我希望有application.py。
即使尝试了第一个解决方案后仍然无法解决问题,也应将WSGI PATH更改为folder_name/application.py
。
希望对您有所帮助。