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

Serverless Flask Python应用部署Lambda后Numpy导入失败求助

解决AWS Lambda中Serverless Flask应用无法导入NumPy的问题

这个ModuleNotFoundError: No module named 'numpy.core._multiarray_umath'错误本质是NumPy的二进制编译版本与Lambda运行环境不兼容——你本地(比如macOS/Windows)安装的NumPy是针对本地系统架构编译的,而Lambda用的是Amazon Linux环境,底层C扩展文件不匹配。下面是具体解决步骤:

1. 启用Serverless Python Requirements的Docker编译功能

修改你的serverless.yml,在custom下的pythonRequirements配置中添加dockerizePip: true,让工具在Lambda兼容的Amazon Linux环境中安装依赖:

custom:
  pythonRequirements:
    dockerizePip: true
    # 如果你用的是ARM架构的Lambda(比如Graviton2),追加下面一行
    # dockerImage: amazon/aws-lambda-python:3.9-arm64

2. 清理缓存并重新部署

删除本地残留的旧依赖和部署缓存,避免干扰:

rm -rf .serverless node_modules requirements.zip

然后重新运行部署命令:

sls deploy

这时候工具会自动拉取Amazon Linux的Docker镜像,在容器内安装依赖,生成的包完全适配Lambda环境。

3. 确认requirements.txt版本正确

确保你的requirements.txt里明确指定了兼容的NumPy版本,不要有版本冲突:

numpy==1.22.0
flask==2.2.2  # 替换成你实际使用的Flask版本
# 其他依赖包...

4. 手动构建依赖(如果上述方法仍无效)

如果自动编译还是有问题,可以手动在Lambda兼容环境中打包依赖:

  1. 拉取Lambda对应的Python镜像:
    docker run -v "$PWD":/var/task public.ecr.aws/sam/build-python3.9:latest /bin/bash
    
  2. 在容器内创建虚拟环境并安装依赖:
    python3.9 -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt -t ./package
    
  3. 退出容器后,将package目录下的所有文件替换到Serverless生成的依赖包中,再重新部署。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:35:27