Windows10下PostgreSQL14执行plpython3u扩展报错求解决
解决PostgreSQL 14中plpython3u加载失败的问题
核心问题分析
从报错日志能明确两个关键问题:
- PostgreSQL尝试加载
plpython3.dll失败,且Python环境路径混乱(同时指向Python 3.3和3.9两个不兼容版本) - PYTHONHOME和PYTHONPATH配置错误,导致Python核心的
encodings模块无法被找到
具体解决步骤
1. 匹配PostgreSQL 14兼容的Python版本
PostgreSQL 14的plpython3u扩展必须使用Python 3.9版本(对应EDB Language Pack v2的Python 3.9),日志中出现的Python 3.3属于旧版本,完全不兼容,需要彻底清理相关路径与配置。
2. 修正系统环境变量
- 打开Windows环境变量设置:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 删除或修改PYTHONHOME:移除指向
C:\edb\languagepack-9.6\x64\Python-3.3的PYTHONHOME,改为指向正确的Python 3.9路径(例如C:\edb\languagepack\v2\Python-3.9) - 调整PYTHONPATH:仅保留Python 3.9的相关路径,比如
C:\edb\languagepack\v2\Python-3.9\Lib;C:\edb\languagepack\v2\Python-3.9\Lib\encodings,删除所有指向Python 3.3的路径 - 重启PostgreSQL服务:打开「服务」找到
postgresql-x64-14,右键选择重启
3. 安装对应版本的EDB语言包
若未安装EDB Language Pack,需下载PostgreSQL 14适配的EDB Language Pack v2(内置Python 3.9),安装时选择与PostgreSQL一致的位数(x64),安装路径保持默认或记录准确,确保环境变量指向该路径。
4. 重新安装plpython3u扩展
打开psql命令行,执行以下操作:
-- 卸载已损坏的扩展(如果存在) DROP EXTENSION IF EXISTS plpython3u; -- 重新创建扩展 CREATE EXTENSION IF NOT EXISTS plpython3u;
5. 验证环境配置正确性
在psql中执行以下函数,检查Python路径是否正确:
CREATE OR REPLACE FUNCTION check_python_env() RETURNS text AS $$ import sys return str(sys.path) $$ LANGUAGE plpython3u; SELECT check_python_env();
返回结果若全为Python 3.9的路径,说明环境配置无误。
内容的提问来源于stack exchange,提问作者Mark Cowley
相关产品推荐
相关产品推荐

