python3.9-alpine镜像安装psycopg2-binary==2.8.2报错如何解决
解决python3.9-alpine镜像安装psycopg2-binary==2.8.2报错问题
报错根因
psycopg2-binary 2.8.2版本没有发布适配python3.9 + alpine系统的预编译wheel包:
- 2.8.2版本发布时python3.9还未正式推出,没有对应python版本的适配
- alpine使用musl libc而非主流的glibc,官方发布的预编译psycopg2-binary包基本都是针对glibc环境构建,不适配alpine系统
哪怕pip的版本列表里显示存在2.8.2版本,也只是其他系统/其他python版本的可用包,和当前环境不匹配。
解决方案
方案1:升级psycopg2-binary版本(推荐,无需编译依赖)
2.9及以上版本已适配python3.9及alpine环境,直接执行安装命令即可:pip install psycopg2-binary>=2.9方案2:必须使用2.8.2版本时,本地编译安装
先安装alpine环境下的编译依赖,再安装对应版本的psycopg2(无需binary包,直接用源码编译):
# 安装编译依赖 apk add --no-cache postgresql-dev gcc python3-dev musl-dev # 编译安装指定版本 pip install psycopg2==2.8.2
- 方案3:Dockerfile构建优化
如果是在Dockerfile中使用,可合并层并删除编译依赖减小镜像体积:
FROM python:3.9-alpine RUN apk add --no-cache --virtual .build-deps postgresql-dev gcc python3-dev musl-dev \ && pip install psycopg2==2.8.2 \ && apk del .build-deps
内容的提问来源于stack exchange,提问作者charles
相关产品推荐
相关产品推荐

