You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

切换Python3.9后AWS Lambda部署镜像出现Keras模块找不到问题

排查Python3.9 Lambda镜像中'keras.src'模块找不到的问题

我正在构建部署在API网关后方、与Sagemaker交互的AWS Lambda函数。此前使用其他Python镜像部署均正常,已有十余同类型Lambda在生产环境稳定运行。因需要使用Python3.9特性,切换至对应镜像后,未改动requirements.txt的情况下,Lambda运行时出现错误,提示找不到'keras.src'模块。

相关配置

requirements.txt

tensorflow==2.8.0
keras==2.8.*
requests==2.28.2
pandas
scikit-learn
joblib==1.2
langdetect==1.0.9
beautifulsoup4==4.12.2
urllib3<2
dill
protobuf<3.20

Dockerfile

FROM amazon/aws-lambda-python:3.9

COPY app.py ${LAMBDA_TASK_ROOT}

COPY requirements.txt  .

RUN  pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}" --verbose

CMD [ "app.lambda_handler"] 

部署脚本

docker build -t project-foo . --no-cache --progress=plain &> build.log
docker tag project-foo:latest <aws-account-id>.dkr.ecr.eu-west-1.amazonaws.com/project-foo:latest
docker push <aws-account-id>.dkr.ecr.eu-west-1.amazonaws.com/project-foo:latest

aws lambda update-function-code --function-name project-foo-test --image-uri <aws-account-id>.dkr.ecr.eu-west-1.amazonaws.com/project-foo:latest > update_response.json  

错误信息

{
  "errorMessage": "Unable to import module 'app': No module named 'keras.src'",
  "errorType": "Runtime.ImportModuleError",
  "requestId": "<requestid>",
  "stackTrace": []
}

排查解决方法

  • 核对Keras与TensorFlow版本兼容性:查看build.log中的安装日志,确认实际安装的Keras版本是否为2.8.x,以及TensorFlow是否正确关联Keras。TensorFlow 2.x本身内置Keras模块,单独安装的Keras可能与内置版本产生路径冲突。
  • 移除单独的Keras依赖:TensorFlow 2.8.0已包含完整的Keras实现,无需单独安装keras包。尝试从requirements.txt中删除keras==2.8.*,仅保留tensorflow==2.8.0,重新构建镜像测试。
  • 验证镜像内的模块结构:本地运行构建好的镜像,进入容器后检查Lambda任务根目录下的Keras目录结构,确认是否存在keras/src路径。执行命令示例:
    docker run -it --entrypoint bash project-foo:latest
    cd ${LAMBDA_TASK_ROOT}
    ls -la keras/
    
  • 检查pip安装路径正确性:查看build.log中的pip输出,确认--target参数是否正确指向/var/task(Lambda默认任务根目录),避免依赖被安装到系统路径而非任务目录。
  • 强制指定Keras精确版本:将requirements.txt中的keras==2.8.*改为keras==2.8.0,避免pip拉取2.8.x系列中可能存在路径结构变化的版本,重新构建测试。
  • 排查Python环境系统依赖差异:对比之前正常运行的Python版本镜像(如3.8)与3.9镜像的系统依赖,查看是否缺少Keras运行所需的系统库。可在Dockerfile中添加yum install -y <依赖库>补充必要包。

内容的提问来源于stack exchange,提问作者JeffLuppes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 18:40:07