无法为postgres 12安装plpython

问题描述

首先,我的问题是在阅读了许多其他类似问题后发布的 Install PL/Python on Windows for PostgreSQL 12 以及先前方法和评论的各种试验。

但是当我尝试使用pl / python时,我被困了大约一个半月。

配置

我使用了edb postgresql-12.1-3-windows-x64软件包,包括

-PostgreSQL 12.1,由Visual C ++ build 1914(64位)编译

-pgadmin4作为gui

-语言包。

+在语言包的顶部分别安装了各种版本的python(因为它不起作用)。现在,我使用的是Win32上的Python 3.7.6 v3.7.6:43364a7ae0,[MSC v.1916 64位(AMD64)]

问题

当我运行“ CREATE EXTENSION plpython3u;”时

我得到的似乎是经典的错误消息“错误:无法加载库“ C:/ Program Files / PostgreSQL / 12 / lib / plpython3.dll”:找不到指定的模块。”

根据阅读多个帖子和文章,我的理解是需要2个元素

1。适当的python解释器

Python运行时需要匹配PostgresSQL版本PostgreSQL文件夹中的文档指示

过程语言pl / Perl,pl / Python和pl / Tcl包含在 PostgreSQL的这种发行版。该服务器已使用 这些语言解释器的LanguagePack社区分发。 要在PostgreSQL中使用这些语言中的任何一种,请下载并 安装适当的口译员,并确保将其包含在其中 用来启动数据库服务器的PATH变量。的 下面显示了使用的版本-较新的次要版本(错误修正)版本也可能 可以,但尚未经过测试:Python 3.7

通过软件“ dependency walker”在C:\ program files \ postgresql \ 12 \ lib中运行plpython3.DLL时,根据安装的python版本,我会得到各种结果。

-当我使用python 3.7.6()32位时,它似乎在某种程度上起作用。至少找到了依赖项,但是在依赖于python dll的其他dll中,它带有红色问号:

enter image description here

-当我运行PostgreSQL 64位时,我卸载了它,现在正在运行python 3.7.6()64位,如文章开头所述。不知何故,事情变得更糟了,因为我现在在python37dll前面只有一个问号,而没有别的。好像找不到了。为什么????

2。设置环境变量PATH和PYTHONHOME

现在文档https://www.enterprisedb.com/edb-docs/d/edb-postgres-advanced-server/user-guides/language-pack-guide/12/EDB_Postgres_Language_Pack_Guide.1.09.html#和论坛帮助管理员https://postgresrocks.enterprisedb.com/t5/PostgreSQL/unable-to-install-pl-python-extension/td-p/4059/

提到更改环境变量PATH和PYTHONHOME的需求。

set PYTHON_HOME=c:\edb\languagepack\v1\Python-3.7


set PATH=C:\edb\languagepack\v1\Python-3.7;C:\edb\languagepack\v1\Perl-5.26\bin;C:\edb\languagepack\v1\Tcl-8.6\bin;%PATH%

论坛中提到您需要在命令提示符下进行更改。该文档并未具体说明您应该如何执行此操作,但我认为这意味着python解释器本身

这两种方法都不起作用。当我使用命令提示符时,没有答案:没有错误,什么都没有。它只是在另一行开始新的。我学会了echo %PYTHON_HOME%命令,而且似乎至少在会话中要考虑到它。但是我仍然有同样的错误。 关于这一点,有人向我提到命令提示符方法还是错误的,因为那时需要通过命令方法运行postgresql。他告诉我,我需要将它作为windwow服务运行,我不知道该怎么做。

我真的很想在被困了这么长时间后继续前进,并且非常感谢任何见识。

解决方法

查看此消息。 Error during: CREATE EXTENSION plpython3u; on PostgreSQL 9.6.0

对于PlPython,有2种解决方案:

  • 您要使用特定的python版本>使用源代码并对其进行编译
  • 您要使用edb安装程序>安装python编译时使用的python版本,该dll需要放置在c:\windows\system32

使用 Stack Builder !并在您的数据库版本中安装插件 EDB语言包

enter image description here

例如可以在安装后运行 enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...