1

首先,我的问题是在阅读了许多其他问题后发布的,例如 在 Windows 上安装 PL/Python for PostgreSQL 12 以及对以前方法和评论的各种试验。

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

配置

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

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

-pgadmin4 作为 gui

- 语言包。

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

问题

当我运行“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 中带有一些问号:

在此处输入图像描述

- 当我运行 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。他告诉我我需要将其作为 windows 服务运行,但我不知道该怎么做。

在被困这么久之后,我真的很想继续前进,并且非常感谢任何见解。

4

1 回答 1

0

看看这个消息。 期间出错:创建扩展 plpython3u;在 PostgreSQL 9.6.0 上

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

  • 你想使用特定的python版本>使用源代码并编译它
  • 你想使用edb安装程序>安装编译时使用的python版本需要放置dllc:\windows\system32

使用堆栈生成器!并使用您的数据库版本安装附加组件EDB 语言包

在此处输入图像描述

例如安装后即可运行 在此处输入图像描述

于 2020-10-02T17:53:16.943 回答