PostgreSQL 无法创建 plpythonu 扩展

PostgreSQL unable to create plpythonu extension

我正在尝试在 Windows 上用 PostgreSQL 编写一个函数,主体中有一个 Python 脚本,但我 运行 在尝试创建plpython 扩展。我运行的命令是:

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...

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

您可以使用 Dependency Walker.

检查 plpython3u.dll 需要哪个版本的 Python

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