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

含Numpy的AWS Lambda压缩包无法运行,请求技术支持

解决AWS Lambda(Python 3.6)加载Numpy的依赖问题

我之前部署Lambda Python函数时也踩过Numpy依赖的坑,结合你遇到的virtualenv操作全局包的问题,给你几个可行的解决方向:

1. 用Lambda兼容环境打包Numpy

Lambda运行在Amazon Linux系统上,本地Windows/Mac安装的Numpy二进制包和Lambda环境不兼容,而且容易出现虚拟环境关联全局包的问题。推荐用Docker模拟Lambda环境打包:

  • 拉取Python 3.6的Lambda构建镜像:
    docker pull lambci/lambda:build-python3.6
    
  • 启动容器并挂载本地项目目录:
    docker run -v "$(pwd)":/var/task lambci/lambda:build-python3.6 bash
    
  • 在容器内直接安装依赖到当前目录(无需虚拟环境也能避免全局包问题):
    pip install numpy -t .
    
  • 退出容器后,将你的Lambda函数代码(比如lambda_function.py)和根目录下的Numpy依赖一起打包成Zip,注意不要包含Docker容器里的无关文件。

2. 调整打包目录结构

Lambda要求依赖包直接放在Zip根目录,不能嵌套在子文件夹里。正确的Zip结构应该是:

lambda_function.py  # 你的函数入口文件
numpy/              # Numpy的核心目录
numpy.libs/         # Numpy的依赖库目录

如果之前把依赖放在venv/lib/python3.6/site-packages/下,打包时要把这个目录里的内容移到Zip根目录,否则Lambda的Python解释器找不到依赖。

3. 避免虚拟环境关联全局包

你遇到的virtualenv试图删除全局包的问题,大概率是打包时错误包含了虚拟环境的配置文件,或者安装依赖时没有指定目标目录。解决方式:

  • 安装依赖时一定要用-t参数指定安装到当前项目目录,而不是虚拟环境的默认目录
  • 打包前删除虚拟环境的bin、include等目录,只保留site-packages下的依赖文件,再把这些文件移到Zip根目录
  • 如果不需要虚拟环境,直接在Docker容器里用系统pip安装到目标目录更稳妥

4. 验证Lambda执行权限

虽然看起来是依赖问题,但偶尔权限不足也会导致加载失败。确保你的Lambda执行角色拥有:

  • 从S3读取Zip包的权限(如果是通过S3部署)
  • 基础的Lambda执行权限(AWSLambdaBasicExecutionRole)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:42:23