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

AWS Lambda使用OpenCV层时遇No module named 'numpy.core._multiarray_umath'错误

解决AWS Lambda中OpenCV层的Numpy导入错误

核心问题定位

你遇到的No module named 'numpy.core._multiarray_umath'错误,本质是Lambda运行环境无法正确识别或加载层中的Numpy库,常见原因集中在层的构建环境、目录结构、版本兼容这几个方面。

修复步骤

  • 匹配Lambda运行环境构建层
    Lambda基于Amazon Linux 2运行,本地(Windows/macOS)编译的Numpy/OpenCV会因系统架构、依赖库差异失效。必须在一致环境中构建:

    1. 使用Docker拉取Lambda官方镜像:docker pull public.ecr.aws/lambda/python:3.7
    2. 启动容器并进入:docker run -it public.ecr.aws/lambda/python:3.7 /bin/bash
    3. 在容器内创建层目录并安装依赖:
      mkdir -p python/lib/python3.7/site-packages/
      pip install numpy==1.21.6 opencv-python -t python/lib/python3.7/site-packages/
      
    4. 将python目录打包为zip:zip -r opencv-layer.zip python/,上传作为Lambda层。
  • 检查层的目录结构
    Lambda层的Python库必须严格放在python/lib/python3.7/site-packages/路径下。解压你的层zip包,确认Numpy和OpenCV的文件都在该路径内,否则Lambda无法加载。

  • 调整Numpy版本
    虽然numpy 1.21.6支持Python3.7,但Lambda环境可能存在依赖缺失。可以尝试降级到更稳定的兼容版本,比如1.21.0,构建时指定:pip install numpy==1.21.0 opencv-python -t ...

  • 调整层的加载顺序
    如果函数关联了多个层,确保包含Numpy的层排在OpenCV层之前——Lambda按层的顺序加载依赖,先加载Numpy才能让OpenCV正常调用。

验证方法

上传修复后的层并关联到Lambda函数,测试运行。若仍报错,可在函数代码中添加import sys; print(sys.path),确认层的路径是否被正确添加到Python的搜索路径中。

内容的提问来源于stack exchange,提问作者Jayalekshmi R J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 09:36:20