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

无法向AWS Lambda层添加numpy,导入报错求助

解决AWS Lambda层导入numpy/scipy时的"不能从源码目录导入"错误

错误原因

这个报错的核心是你的Lambda层里的numpy包包含了源码目录结构(比如带.git、setup.py这类文件),Lambda运行时加载时误认为是在numpy源码目录中执行,触发了numpy的保护机制。

修复步骤

1. 正确构建适配Lambda的依赖包

Lambda运行在Amazon Linux环境,本地直接pip安装的包可能不兼容,必须在匹配的环境下构建:

  • 使用Docker模拟Lambda环境:
    # 拉取Python3.13的Lambda基础镜像
    docker pull public.ecr.aws/lambda/python:3.13
    
    # 启动容器并挂载本地目录
    docker run -v "$PWD:/var/task" -it public.ecr.aws/lambda/python:3.13 bash
    
    # 在容器内安装依赖到指定目录
    pip install numpy scipy -t python/lib/python3.13/site-packages/
    
  • 退出容器后,本地会生成python目录,这就是符合Lambda层要求的结构。

2. 正确打包Lambda层

  • 把python目录打包成zip文件:
    zip -r numpy-scipy-layer.zip python/
    
  • 注意:zip包的根目录必须是python,不能是嵌套的子目录(比如不能把包含python目录的文件夹打包)。

3. 更新Lambda层并测试

  • 把新的zip包上传到AWS Lambda层,关联到你的Python3.13 Lambda函数。
  • 测试函数,确认导入错误消失。

额外注意事项

  • 不要直接从numpy的源码仓库下载源码打包,必须通过pip安装得到编译好的、适配Lambda环境的包。
  • Python3.13是较新版本,确保使用的Lambda基础镜像版本正确,避免依赖不兼容。
  • 检查Lambda函数的执行角色是否有足够权限读取层资源(通常默认权限足够,若出现权限报错再调整)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:24:51