在 AWS 上部署的 Serverless Flask 应用程序出错,没有名为 'werkzeug._compat' 的模块
Getting error with deployed Serverless Flask app on AWS, No module named 'werkzeug._compat'
我创建了一个简单的 Flask 应用程序并将其成功部署到 AWS Lambda。我正在执行 this tutorial.
的第一步
当Lambda为运行时,日志中出现如下错误:
Unable to import module 'wsgi_handler': No module named 'werkzeug._compat'
我已经安装了 serverless-python-requirements 和 serverless-wsgi。这些文件夹存在于上传到 AWS 的 zip 文件夹中。
我在 serverless_wsgi.py 中找到了对 werkzeug._compat 的引用:
from werkzeug._compat import BytesIO, string_types, to_bytes, wsgi_encoding_dance
但是,我似乎无法在可能找到此函数的 Werkzeug 文件夹中的任何地方找到“_compat”。我是不是丢了包裹什么的?
这是我的 serverless.yml:
# serverless.yml
service: serverless-flask
plugins:
- serverless-python-requirements
- serverless-wsgi
custom:
wsgi:
app: app.app
packRequirements: false
pythonRequirements:
dockerizePip: non-linux
provider:
name: aws
runtime: python3.6
stage: dev
region: us-east-1
functions:
app:
handler: wsgi_handler.handler
events:
- http: ANY /
- http: 'ANY {proxy+}'
还有我的 requirements.txt:
click==8.0.0
dataclasses==0.8
Flask==2.0.0
itsdangerous==2.0.0
Jinja2==3.0.0
MarkupSafe==2.0.0
Werkzeug==2.0.0
Flask、Werkzeug 和其他 pallet 项目刚刚进行了重大更新,放弃了 python2 支持并删除了 _compat
模块。 AWS 还没有解决能力问题。
最简单的修复方法是将 Flask、Werkzeug 等降级到以前的主要版本。
我创建了一个简单的 Flask 应用程序并将其成功部署到 AWS Lambda。我正在执行 this tutorial.
的第一步当Lambda为运行时,日志中出现如下错误:
Unable to import module 'wsgi_handler': No module named 'werkzeug._compat'
我已经安装了 serverless-python-requirements 和 serverless-wsgi。这些文件夹存在于上传到 AWS 的 zip 文件夹中。
我在 serverless_wsgi.py 中找到了对 werkzeug._compat 的引用:
from werkzeug._compat import BytesIO, string_types, to_bytes, wsgi_encoding_dance
但是,我似乎无法在可能找到此函数的 Werkzeug 文件夹中的任何地方找到“_compat”。我是不是丢了包裹什么的?
这是我的 serverless.yml:
# serverless.yml
service: serverless-flask
plugins:
- serverless-python-requirements
- serverless-wsgi
custom:
wsgi:
app: app.app
packRequirements: false
pythonRequirements:
dockerizePip: non-linux
provider:
name: aws
runtime: python3.6
stage: dev
region: us-east-1
functions:
app:
handler: wsgi_handler.handler
events:
- http: ANY /
- http: 'ANY {proxy+}'
还有我的 requirements.txt:
click==8.0.0
dataclasses==0.8
Flask==2.0.0
itsdangerous==2.0.0
Jinja2==3.0.0
MarkupSafe==2.0.0
Werkzeug==2.0.0
Flask、Werkzeug 和其他 pallet 项目刚刚进行了重大更新,放弃了 python2 支持并删除了 _compat
模块。 AWS 还没有解决能力问题。
最简单的修复方法是将 Flask、Werkzeug 等降级到以前的主要版本。