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

如何控制plpython3使用的Python版本?CentOS7下PostgreSQL11指定Python3.9

CentOS 7下PostgreSQL 11修改plpython3绑定Python3.9的操作步骤

原因说明:yum源预装的postgresql11-plpython3包在编译时默认链接了CentOS 7系统内置的libpython3.6m.so,修改系统默认python3软链接不会生效,需重新编译plpython3扩展绑定Python3.9动态库。

前置准备

安装必要依赖包:

# 需确保你安装的Python3.9对应开发包已存在,如使用第三方源安装的Python3.9则安装对应版本的devel包,源码编译的Python3.9需提前开启--enable-shared参数编译
sudo yum install -y python39-devel postgresql11-devel

操作步骤

  1. 卸载原有预编译的plpython3包
sudo yum remove -y postgresql11-plpython3
  1. 编译适配Python3.9的plpython3扩展
  • 下载和当前运行的PostgreSQL11小版本完全一致的源码包,解压后进入源码内的contrib/plpython目录
  • 执行以下编译安装命令:
make PYTHON=/usr/bin/python3.9 PG_CONFIG=/usr/pgsql-11/bin/pg_config
sudo make install PYTHON=/usr/bin/python3.9 PG_CONFIG=/usr/pgsql-11/bin/pg_config
  1. 验证扩展动态库链接是否正确
ldd /usr/pgsql-11/lib/plpython3.so | grep libpython

输出结果显示关联libpython3.9.so即为成功。

  1. 重启PostgreSQL服务并重建扩展
sudo systemctl restart postgresql-11

进入PostgreSQL命令行执行以下SQL:

-- 先删除原有扩展,依赖该扩展的函数会同步删除,请提前备份
DROP EXTENSION IF EXISTS plpython3u CASCADE;
CREATE EXTENSION plpython3u;
  1. 测试Python版本
    执行你提供的pyver()函数,返回结果会显示为Python3.9版本。

注意事项

  • 后续升级PostgreSQL11小版本后,需重新编译一次plpython3扩展,避免版本不兼容
  • 如使用源码编译的Python3.9,需确保编译时添加了--enable-shared参数,否则会缺少动态库导致plpython编译失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:36:04