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

AWS Lambda函数无法找到Psycopg2包问题求助

解决AWS Lambda中No module named psycopg2的问题

你遇到的核心问题是本地编译的psycopg2和Lambda运行环境不兼容——你在macOS上编译的psycopg2依赖的是苹果系统的底层库,而Lambda运行在Amazon Linux(或Amazon Linux 2)环境下,系统架构和依赖库完全不同,所以上传后无法识别这个模块。下面给你两个实用的解决办法:

方法一:用预编译的psycopg2-binary(快速搞定)

这是最省心的方案,适合绝大多数场景:

  • 先确认你本地使用的Python版本,和Lambda配置的运行时版本完全一致(比如Lambda用Python 3.9,你本地就用3.9)
  • 创建一个临时文件夹,把你的lambda_insertEmailAddress.py放进去
  • 在该文件夹下执行命令,安装适配Lambda环境的psycopg2:
    pip install psycopg2-binary -t .
    
  • 安装完成后,把lambda_insertEmailAddress.py和生成的psycopg2文件夹一起打包成zip(注意别把你的postgresql-9.4.3文件夹加进去,Lambda根本不需要这个)
  • 重新上传这个zip包到Lambda即可

方法二:在Amazon Linux环境下编译(自定义需求场景)

如果你的项目需要自定义编译psycopg2,可以用Docker模拟Lambda的运行环境来操作:

  • 先拉取Amazon Linux 2镜像:
    docker pull amazonlinux:2
    
  • 启动容器并挂载你的项目目录(把/path/to/your/project换成你本地项目的实际路径):
    docker run -v /path/to/your/project:/app -it amazonlinux:2
    
  • 在容器内安装编译所需的依赖:
    yum install -y python3-devel postgresql-devel gcc
    
  • 切换到挂载的项目目录,安装psycopg2:
    cd /app
    pip3 install psycopg2 -t .
    
  • 退出容器,把本地生成的psycopg2文件夹和你的lambda_insertEmailAddress.py打包,上传到Lambda

额外提醒

  • 打包时要保证zip的根目录直接包含你的Python文件和psycopg2文件夹,别嵌套在子目录里
  • 完全不需要把postgresql-9.4.3文件夹打包,Lambda会用自身环境的PostgreSQL依赖
  • 一定要确认Lambda的运行时Python版本,和你安装psycopg2时用的Python版本完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:19:03