如何在部署 Flask 应用程序时修复此 Elastic Beanstalk 错误:在您的系统上找不到 Python 3.7.0

Posted

技术标签:

【中文标题】如何在部署 Flask 应用程序时修复此 Elastic Beanstalk 错误:在您的系统上找不到 Python 3.7.0【英文标题】:How do I fix this Elastic Beanstalk error when deploying a Flask app: Python 3.7.0 was not found on your system 【发布时间】:2020-09-22 00:47:51 【问题描述】:

我正在尝试按照官方AWS tutorial 使用 EB CLI 部署我的 Flask 应用程序。我收到错误“创建环境操作已完成,但出现错误”。观察环境日志,服务器似乎缺少正确的 Python 版本。

以下是 EB 环境详细信息、我的 PipFile、EB CLI 输出和部署日志中的错误。

我该如何解决这个问题?

环境详情:

 Application name: server_eb
  Region: eu-west-2
  Deployed Version: XXX
  Environment ID: XXX
  Platform: arn:aws:elasticbeanstalk:eu-west-2::platform/Python 3.7 running on 64bit Amazon Linux 2/3.0.1
  Tier: WebServer-Standard-1.0
  CNAME: UNKNOWN
  Updated: 2020-06-02 16:53:10.321000+00:00

PipFile:

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
flask = "~=1.1.1"
python-dotenv = "~=0.13.0"
psycopg2 = "~=2.8.5"
flask-sqlalchemy = "~=2.4.1"
flask-migrate = "~=2.5.3"
flask-dance = extras = ["sqla"],version = "~=3.0.0"
flask-login = "~=0.4.1"
blinker = "~=1.4"
flask-session = "==0.3.1"
redis = "==3.4.1"

[scripts]
migrate="flask db upgrade"
start="flask run --cert=cert.pem --key=key.pem"

[requires]
python_version = "3.7.0"

CLI 输出:

2020-06-02 16:54:55    ERROR   [Instance: XXX] Command failed on instance. An unexpected error has occurred [ErrorCode: 0000000001].
2020-06-02 16:54:55    INFO    Command execution completed on all instances. Summary: [Successful: 0, Failed: 1].
2020-06-02 16:55:57    ERROR   Create environment operation is complete, but with errors. For more information, see troubleshooting documentation.

ERROR: ServiceError - Create environment operation is complete, but with errors. For more information, see troubleshooting documentation.

日志:

2020/06/02 16:54:55.030996 [ERROR] An error occurred during execution of command [app-deploy] - [SetUpPythonEnvironment]. Stop running the command. Error: fail to install Gunicorn with error Command /bin/sh -c python3 -m pipenv install gunicorn --skip-lock failed with error exit status 1. Stderr:Warning: the environment variable LANG is not set!
We recommend setting this in ~/.profile (or equivalent) for proper expected behavior.
Warning: Python 3.7.0 was not found on your system…
You can specify specific versions of Python with:
  $ pipenv --python path/to/python

【问题讨论】:

EB 使用Python 3.7.6,所以也许使用它而不是 3.7.0 会有所帮助。 感谢@Marcin,成功了。这是在哪里记录的? 我刚刚检查了我的 EB 实例,它的确切 python 版本是什么。如果您不介意,我会回答以供将来参考。 EB 上的 Python 版本的链接也在答案中。 感谢@Marcin,这很有用 【参考方案1】:

根据 cmets,问题在于 EB 使用 Python 3.7.6,而 OP 的依赖项需要 3.7.0 版本。

解决方案是将依赖项更改为Python 3.7.6

当前在 EB 上运行的 python 版本可以在here找到:

运行 Python 3.7 的 64 位 Amazon Linux 2 v3.0.1 - Python 3.7.6

【讨论】:

以上是关于如何在部署 Flask 应用程序时修复此 Elastic Beanstalk 错误:在您的系统上找不到 Python 3.7.0的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Flask-SocketIO 修复此 KeyError 错误?

Flask 应用如何部署

尝试在 Apache2 上使用 WSGI 部署 Flask 时如何解决导入错误

Flask Beanstalk 部署错误

部署 Flask 应用

如何在 IIS 中部署 Flask 应用程序?