部署AWS Chalice时出现No module named 'playhouse'错误的解决咨询
解决AWS Chalice部署后找不到playhouse模块的问题
核心原因
playhouse是peewee的内置子包,无法单独安装;部署到Lambda时,依赖未被正确打包到部署包中,导致运行时找不到模块。
步骤1:修正依赖安装操作
不要尝试单独安装playhouse,直接确保peewee已添加到项目依赖:
poetry add peewee
执行后,playhouse会作为peewee包的一部分被安装到虚拟环境中。
步骤2:确保Chalice部署时打包依赖
Chalice默认会收集项目依赖并打包到Lambda部署包,若自动打包失效,可按以下方式处理:
方式A:清理缓存后重新部署
- 删除Chalice的部署缓存目录:
rm -rf .chalice/deployment - 确保本地依赖安装完整:
poetry install --no-root - 重新部署应用:
chalice deploy
方式B:手动指定依赖列表
在.chalice/config.json中明确添加peewee到依赖列表:
{ "version": "2.0", "app_name": "your-app-name", "requirements": [ "peewee>=3.17.0" ] }
保存后重新执行chalice deploy,Chalice会根据该列表安装并打包依赖。
方式C:使用Lambda层管理依赖(适合多服务共享依赖)
- 创建依赖层目录并安装peewee:
mkdir -p python pip install peewee -t python/ - 打包成zip文件:
zip -r peewee-layer.zip python/ - 通过AWS控制台或CLI上传该zip作为Lambda层,记录层的ARN。
- 在
.chalice/config.json中添加层配置:{ "version": "2.0", "app_name": "your-app-name", "layers": [ "arn:aws:lambda:你的区域:你的账号ID:layer:peewee-layer:1" ] } - 重新部署应用。
额外排查点
- 确认本地开发环境与Lambda运行时的Python版本一致(比如本地用3.11,Lambda也要配置为3.11),避免版本兼容问题。
- 下载Lambda部署包解压检查,确认
peewee和playhouse目录是否存在,若不存在则说明依赖打包未成功,需重新执行上述步骤。
内容的提问来源于stack exchange,提问作者bitfede
相关产品推荐
相关产品推荐

