【问题标题】:Cannot install plpython for postgres 12无法为 postgres 12 安装 plpython
【发布时间】:2021-06-08 13:05:44
【问题描述】:

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

但是我在尝试使用 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 bit (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。他告诉我我需要将它作为 windows 服务运行,但我不知道该怎么做。

在被困这么久之后,我真的很想继续前进,如果有任何见解,我将不胜感激。

【问题讨论】:

    标签: python postgresql plpython enterprisedb postgres-plpython


    【解决方案1】:

    看看这条消息。 Error during: CREATE EXTENSION plpython3u; on PostgreSQL 9.6.0

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

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

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

    例如安装后即可运行

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2020-09-02
    • 2014-03-09
    • 1970-01-01
    相关资源
    最近更新 更多