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

为AWS Lambda创建含Numpy依赖的Layer后导入Sagemaker报错求助

解决AWS Lambda中Numpy C扩展导入失败问题
  • 检查Layer目录结构
    Lambda Layer的Python依赖必须放在python/lib/python3.9/site-packages/路径下(对应你使用的Python3.9版本)。解压你的Layer压缩包,确认所有numpy相关文件都在这个层级内,而非直接放在压缩包根目录。正确的目录结构示例:

    layer.zip
    └── python
        └── lib
            └── python3.9
                └── site-packages
                    ├── numpy/
                    ├── numpy-1.21.6.dist-info/
                    └── ...(其他依赖文件)
    

    如果结构错误,重新调整目录后重新打包。

  • 确保编译环境与Lambda运行时一致
    Lambda Python3.9的运行环境是Amazon Linux 2,必须在匹配的环境中编译numpy才能保证二进制兼容:

    • 可以使用AWS提供的Amazon Linux 2 EC2实例,或通过Docker拉取官方镜像在容器内打包:
      # 启动Lambda Python3.9容器
      docker run -v "$PWD":/var/task public.ecr.aws/lambda/python:3.9 bash
      # 在容器内将依赖安装到指定目录
      pip install numpy==1.21.6 sagemaker -t python/lib/python3.9/site-packages/
      # 退出容器后打包
      zip -r layer.zip python/
      
  • 修正文件权限
    解压Layer压缩包后,确保所有文件和目录具备可读权限(如设置为755或644)。打包前可执行以下命令统一权限:

    chmod -R 755 python/
    
  • 排查多Layer依赖冲突
    如果你的Lambda函数关联了多个Layer,检查其他Layer是否也包含numpy包。若存在重复依赖,需确保所有Layer的numpy版本一致,或移除重复包以避免版本冲突。

  • 本地验证Layer完整性
    用Docker模拟Lambda环境,测试numpy是否能正常导入:

    docker run -v "$PWD/python":/opt/python public.ecr.aws/lambda/python:3.9 python -c "import numpy; print(numpy.__version__)"
    

    若此处也报错,说明打包的Layer本身存在问题,需重新在容器内安装依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:46:00