将python34.dll文件复制到c:\windows\system32并将其重命名为python33.dll。
这样创建语言plpython3u应该就没有问题了。
我在使用Postgres 9.6 Windows 10时遇到了完全相同的情况。
PL/Python3U无法通过。
解决方法:
安装Python34 64位Windows 10版本。将Python34.dll复制到c:\ windows \ system32作为Python33.dll,然后它就可以工作了。
这些信息在源安装包的Makefile中。
我们需要将libpython作为共享库。在Python >=2.5中,configure会直接询问Python。但由于这在Debian上已经存在很长时间的问题 (http://bugs.debian.org/695979),为了支持旧版本的Python,我们会查找是否有一个命名类似于共享库的文件作为备用方案。
对于Python Windows:
ifeq ($(PORTNAME), win32)
pytverstr=$(subst .,,${python_version})
PYTHONDLL=$(subst \,/,$(WINDIR))/system32/python${pytverstr}.dll
因此正确的答案是:
要检查我的安装版本,我打开位于 C:\Program Files\PostgreSQL\9.4\lib(更改路径以符合您的环境)的 plpython3.dll
使用 Notepad++ 并搜索 PyUnicode_AsUTF8String,Python DLL 版本将显示在最后一个单词中(在我的情况下为 python33.dll)
检查您的安装以选择正确的 Python 安装程序
SELECT version();
PostgreSQL 9.4.15是由Visual C++ build 1800编译的64位版本。
因此,我需要安装64位的Python 33。
编辑于2020年10月2日
在二进制文件的文档..pgsql\doc\installation-notes.html中也包含了所有这些信息,请查看过程化语言标题。
编辑于2021年6月11日
在系统上安装好正确版本的Python后,您需要将其复制到C:\Windows\System32
目录下。
用旧名称替换Python版本不是一个好的解决方案,因为它可能与该版本不兼容。如果您知道风险,请这样做。所以,如果您想要最新版本的Python来使用plpython,可以自行编译或检查edb编译是否包含您所需的内容。您可以向EDB咨询此信息。
官方包中的plpython3.dll是针对Python 3.3构建的,而不是Python 3.4。它期望在system32文件夹中找到python33.dll。您需要为系统安装Python 3.3。
由于py33已经被淘汰,因此您可能很快会感到沮丧,因为缺乏预构建的二进制包,lxml、pyzmq等都需要从源代码构建。如果您需要任何二进制模块,请确保您已正确设置编译器。
尝试使用Windows 64位的python-3.4.0.amd64版本或从Python 3.4.0下载链接下载其他版本
要添加的环境变量:
C:\Python34\Scripts C:\Python34\