8

我正在尝试在 Windows 上的 PostgreSQL 中使用正文中的 Python 脚本编写一个函数,并且在尝试创建 plpythonu 扩展时遇到错误消息。我正在运行的命令是:

CREATE EXTENSION plpythonu;

这会产生以下错误消息:

ERROR: could not access file "$libdir/plpython2": No such file or directory
SQL state: 58P01

我也尝试过运行:

CREATE EXTENSION plpython3u;

导致此错误:

ERROR: could not load library "C:/Program Files (x86)/PostgreSQL/9.2/lib/plpython3.dll": The specified module could not be found.
SQL state: 58P01

plpython3.dll 文件存在于此位置,但显然缺少一些关键依赖项。我到处搜索,发现对此没有任何帮助。我在机器上安装了 Python 2 和 3...

4

2 回答 2

6

EnterpriseDB 的最新(9.4 或更高版本)二进制安装仅包含 plpython3u.dll。在 9.4 到 9.6 版本中,我必须安装 python 3.3 才能运行 plpython3u。

您可以使用Dependency Walker检查 plpython3u.dll 需要哪个版本的 Python 。

于 2017-08-22T18:04:06.160 回答
2

可以找到完整的答案: https ://postgresrocks.enterprisedb.com/t5/PostgreSQL/unable-to-install-pl-python-extension/mp/4090 它假定您已使用 stackbuilder 来安装 edb 语言包。请检查安装中的命令是否正确。例如 postgresql 数据的路径,edb 和 python 版本的安装路径。当你使用依赖walker(depends.exe)时,只注意pythonxx.dll。对于较旧的 PG 版本,这可能与 EDB 语言包安装的版本一致,也可能不一致。对于 10.7 版,需要 3.4 版 Python。对于 windows,后来的 3.4 Python 版本似乎没有 msi 安装程序。您可能需要安装 3.4.4,或者先尝试将 PG 10 升级到最新版本(10.11)。这个版本需要python 3.7,所以你可以使用EDB下载。但是python版本可能已经存在并且可以找到。 无法加载库 plpython3.dll(在stackoverflow上)有点接近,但没有详细说明所需的环境变量。提出的解决方案不需要您永久更改环境变量,这在使用多个 python 安装时很有帮助。

于 2019-12-17T16:03:58.217 回答