在AWS Lambda与Amplify中使用psycopg2遇模块导入错误求助
AWS Amplify部署Lambda时psycopg2依赖问题解决指南
一、本地依赖文件放置位置
如果你使用Amplify管理Lambda函数(目录结构为amplify/backend/function/[你的函数名称]):
- 把预编译好的适配Amazon Linux 2架构的psycopg2完整包(包含
_psycopg.so等核心文件),直接放到函数目录下的src文件夹内;或者在src里创建vendor文件夹,将psycopg2包放入其中,确保导入路径正确。 - 注意:必须使用针对Lambda运行时(如Python 3.9/3.10)和Amazon Linux 2编译的psycopg2包,本地Mac/Windows环境编译的包无法在Lambda中运行,这是引发
No module named 'psycopg2._psycopg'报错的核心原因。 - 确认
index.py中的导入语句为import psycopg2,无需额外路径,Amplify打包时会将src下的所有内容纳入Lambda执行环境的根目录。
二、可用的Lambda层方案
如果不想手动放置依赖,可自行构建适配Lambda的psycopg2层,步骤如下:
- 用Amazon Linux 2的Docker容器模拟Lambda环境:
docker run -v "$PWD":/var/task public.ecr.aws/sam/build-python3.9:latest /bin/bash - 在容器内安装对应版本的psycopg2-binary到指定目录:
pip install psycopg2-binary -t python/lib/python3.9/site-packages/ - 退出容器后,将
python目录打包为zip文件,上传到AWS Lambda控制台创建层。 - 在Amplify控制台找到对应Lambda函数的设置,进入“层”选项,添加你创建的psycopg2层即可。
内容的提问来源于stack exchange,提问作者cmcnphp
相关产品推荐
相关产品推荐

