当前位置:首页>python>PostgreSQL 安装对应的Python版本及jieba分词组件

PostgreSQL 安装对应的Python版本及jieba分词组件

  • 2026-09-19 11:22:00
PostgreSQL 安装对应的Python版本及jieba分词组件
PostgreSQL 使用jieba分词组件,实现FTS(Full Text Search)全文搜索,需要安装对应的Python版本。通过Python代码在PostgreSQL中进行jieba分词,这里遇到了很多坑,记录下来分享给大家。
查看PostgreSQL 版本:
SELECT version();

--PostgreSQL 18.1 on x86_64-windows, compiled by msvc-19.44.35221, 64-bit

创建Python语言

CREATE LANGUAGE plpython3u;

运行一直报错:

错误: could not load library "E:/zNewAPPs/PostgreSQL/18/lib/plpython3.dll": The specified module could not be found.  CONTEXT:  SQL statement "CREATE FUNCTION plpython3_call_handler() RETURNS language_handler   LANGUAGE c AS '$libdir/plpython3'" extension script file "plpython3u--1.0.sql", near line 3

但是在安装目录PostgreSQL/18/lib/,目录中是有这个plpython3.dll文件的,在安装PostgreSQL的时候就已经存在。
这就比较奇怪了,为什么不能起作用呢?
1、检查是否已经安装了Python
打开cmd命令行工具,输入“Python”能显示版本号信息“Python 3.8.6”,这说明电脑之前本身就已经安装过Python了,并且配置了系统环境变量。难道是版本太旧了,最新的PostgreSQL 18不支持。
于是下载最新版的Python:Python 3.14.2
官网下载地址:

https://www.python.org/downloads/windows/

安装如下:

注意:这里记得勾选添加环境变量。

注意:这里记得勾选“pip”方便后面安装其它包或插件。

安装成功后打开cmd命令行工具,输入“Python”显示版本号信息“Python 3.14.2”。
2、安装jieba分词组件
jieba 中文分词:
  • 支持四种分词模式:
  1. 精确模式,试图将句子最精确地切开,适合文本分析;
  2. 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
  3. 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
  4. paddle模式,利用PaddlePaddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词。同时支持词性标注。
  • 支持繁体分词
  • 支持自定义词典
  • MIT 授权协议
使用pip命令安装:

pip install jieba  

# 也可使用国内的清华镜像

pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple

3、测试jieba分词组件
编写Python代码导入jieba分词包,文件名jieba_example.py,也可在Python tools中直接编码。
import jiebasentence = "马斯克是特斯拉的ceo"seg_list = jieba.cut(sentence, cut_all=False)print("Default Mode: " + "/ ".join(seg_list))

# 运行py文件

python jieba_example.py

# 结果:

Default Mode: 马斯克/ 是/ 特斯拉/ 的/ ceo

测试结果:分词正确。

4、在PostgreSQL 中使用jieba分词
问题就出现在这里,需要在PostgreSQL 18中使用Python语言调用jieba分词。
首先创建Python语言(plpython3u):

CREATE LANGUAGE plpython3u;

就报错误了:ERROR:  could not load library "E:/zNewAPPs/PostgreSQL/18/lib/plpython3.dll": The specified module could not be found.
就是开头说的问题,plpython3.dll模块找不到?但是明明已经存在lib目录下。开始怀疑是Python版本问题,但是现在也安装了新版本的Python 3.14.2,也不行,后面还尝试过把Python的各种dll复制到PostgreSQL安装目录的lib目录下无果。
实在没办法了只能试试Dependency Walker查看下plpython3.dll的依赖。
官网下载:https://www.dependencywalker.com/
这里显示Python313,难道是这个问题?
于是下载了Python 3.13.2版本:
然后重启:postgresql-x64-18 服务。
再次运行:CREATE LANGUAGE plpython3u; 终于成功了。

--查看语言

SELECT * FROM pg_language

WHERE lanname = 'plpython3u';

成功创建。
核心踩坑点总结:
PostgreSQL 的plpython3.dll并非兼容任意 Python3 版本,而是绑定了特定的 Python 版本,Windows 版 PG18 的 plpython3.dll 依赖 Python313;
#PostgreSQL #jieba #Python
好了,问题终于解决了,下篇介绍在 PostgreSQL 中使用 tsvector 文本搜索向量类型结合jieba分词。
点赞关注不迷路哦!

点点关注,点点爱心

最新文章

随机文章