AWS Glue Python3.9中导入psycopg2报错:找不到psycopg2._psycopg模块
解决AWS Glue中psycopg2导入失败的问题
方法1:在兼容Glue的环境中编译打包psycopg2
psycopg2依赖C扩展,本地直接安装的包和Glue的Amazon Linux 2运行环境不兼容,才会出现_psycopg模块缺失的问题,必须在匹配环境中编译:
- 启动一台Amazon Linux 2 EC2实例,安装Python 3.9(和你Glue作业的Python版本一致)
- 安装编译依赖:
sudo yum install gcc python3-devel postgresql-devel -y - 创建虚拟环境并安装指定版本的psycopg2-binary:
python3.9 -m venv venv source venv/bin/activate pip install psycopg2-binary==2.9.9 - 找到安装后的psycopg2目录(通常在
venv/lib/python3.9/site-packages/psycopg2),直接将该目录打包为psycopg2.zip - 将zip包上传到S3,在Glue作业的「Python library path」中填写该S3路径
方法2:通过Job参数指定兼容包安装
使用--additional-python-modules时,需强制pip下载适配Amazon Linux 2的预编译二进制包:
- 在Glue作业的「Job parameters」中添加:
该参数避免pip在Glue环境中尝试本地编译,直接获取兼容的预编译包--additional-python-modules psycopg2-binary==2.9.9 --extra-pip-args "--platform manylinux2014_x86_64 --only-binary :all:"
方法3:调整psycopg2-binary版本
若2.9.9版本仍报错,可尝试适配性更好的旧版本,比如2.9.7:
--additional-python-modules psycopg2-binary==2.9.7
关键验证项
- 确保Glue作业的Python版本和打包/安装psycopg2时的版本完全一致(必须都是3.9)
- 打包zip时,psycopg2目录必须是压缩包的根目录,不能嵌套在
site-packages等子文件夹内 - 检查Glue执行角色是否有读取目标S3包的权限
内容的提问来源于stack exchange,提问作者Guilherme Parreira
相关产品推荐
相关产品推荐

