Ubuntu 20.04缺少psycopg2依赖的postgres-plpython-12如何解决?
问题根因
- 该报错和psycopg2与plpython3的兼容性无关:你执行的SQL初始化语句中存在
plpython2/plpythonu扩展的调用逻辑,而Ubuntu 20.04及以上版本已默认移除Python2支持,对应版本的PostgreSQL软件源也不再提供postgres-plpython-12这类适配Python2的扩展包。 - 你当前安装的libpq*依赖是适配Ubuntu 18.04的PostgreSQL 13版本,软件源和系统版本、PostgreSQL版本不匹配,不需要强制迁移到PostgreSQL 13,先做适配修正即可。
解决方案
1. 修正PostgreSQL软件源
删除适配Ubuntu 18.04的旧pgdg源,添加和你当前Ubuntu版本匹配的PostgreSQL官方源,执行apt update刷新软件包索引,即可找到对应版本的PostgreSQL扩展包、libpq*依赖包。
2. 替换SQL中的Python2扩展调用
修改初始化SQL(即你代码中的_setup_sql)里的扩展创建语句,将所有CREATE EXTENSION plpythonu、CREATE EXTENSION plpython2语句替换为:
CREATE EXTENSION plpython3u;
如果是第三方依赖自动生成的扩展调用,调整对应配置项指定plpython版本为3即可。
3. 安装对应PostgreSQL版本的plpython3扩展
以PostgreSQL 12为例,执行安装命令:
sudo apt install postgresql-12-plpython3
如果你使用其他版本的PostgreSQL,把命令中的12替换为你的PostgreSQL主版本号即可,无需强制升级到PostgreSQL 13。
4. 重装psycopg2适配依赖
执行以下命令重装psycopg2,匹配新的libpq依赖:
pip uninstall -y psycopg2 psycopg2-binary pip install psycopg2-binary
内容的提问来源于stack exchange,提问作者Darren Weber
相关产品推荐
相关产品推荐

