错误期间:CREATE EXTENSION plpython3u;在PostgreSQL 9.6.0上

时间:2016-09-30 21:04:15

标签: python postgresql

我在Windows 2012 R2 Server上安装了PostgreSQL Server 9.6.0和Python 3.4.2。

我将 plpython3.dll 复制到 C:/ Program Files / PostgreSQL / 9.6 / lib /

在PostgreSQL中我尝试运行此命令: CREATE EXTENSION plpython3u;

我收到此消息:

错误:无法加载库“C:/ Program Files / PostgreSQL / 9.6 / lib / plpython3.dll”:找不到指定的模块。

在此文件夹下: C:\ Program Files \ PostgreSQL \ 9.6 \ share \ extension 有plpython3u文件。

如何让PostgreSQL识别这个Python 3扩展?

谢谢!

5 个答案:

答案 0 :(得分:2)

在c:\ windows \ system32中复制python34.dll文件,并将副本命名为python33.dll

创建语言plpython3u应该没有问题。

答案 1 :(得分:1)

这可能会有所帮助,我一直在努力解决这个问题。对我来说,只有当我安装了python的正确版本并添加了环境变量的路径时才能使用。我不确定python 3.4.0是否是 PostgreSQL Server 9.6.0 的正确版本,但它与 PostgreSQL Server 10.0 一起工作正常。

尝试使用版本python-3.4.0.amd64 for windows 64bit或其他版本Python 3.4.0 downloads Link

要添加的环境变量:

C:\ Python34 \脚本 C:\ Python34 \

答案 2 :(得分:0)

官方软件包中的plpython3.dll是针对python 3.3而不是python 3.4构建的。它期望的是system32文件夹中的python33.dll。您需要为您的系统安装python 3.3。

由于py33已被淘汰,你可能很快就会感到沮丧,因为缺乏预先构建的二进制包,lxml,pyzmq等都需要从源代码构建。如果您需要任何二进制模块,请确保您已正确设置编译器。

答案 3 :(得分:0)

与Postgres 9.6 Windows 10完全一样的情况。 PL / Python3U无法通过。

解决方法:

已安装Python34 64位Windows 10版本。 将Python34.dll作为Python33.dll复制到c:\ windows \ system32,并且可以正常工作。

答案 4 :(得分:0)

该信息位于源安装软件包的Makefile中

我们需要libpython作为共享库。在Python> = 2.5中,配置直接询问Python。但是,由于在Debian中已经有很长时间了(http://bugs.debian.org/695979,并且为了支持较旧的Python版本,所以我们发现是否有一个文件像共享库一样被命名为备用文件。 < / p>

对于python Windows:

ifeq ($(PORTNAME), win32)

    pytverstr=$(subst .,,${python_version})
    PYTHONDLL=$(subst \,/,$(WINDIR))/system32/python${pytverstr}.dll

所以写的答案是:

  • WINDIR 是: C:\ Windows
  • pytverstr用于makefile中,该参数具有定义python版本的参数
  • PYTHONDLL 是dll的位置

要检查安装的版本,请打开位于 C:\ Program Files \ PostgreSQL \ 9.4 \ lib (随您的环境更改路径)中的plpython3.dll

使用记事本++并搜索 PyUnicode_AsUTF8String python dll版本在最后一个单词中可见(在我的情况下为python33.dll)

检查您的安装以选择python的良好安装程序

SELECT version();

PostgreSQL 9.4.15,由Visual C ++ build 1800编译, 64位

所以我需要在64位上安装Python 33

编辑2020-10-02

二进制 .. pgsql \ doc \ installation-notes.html 的文档中也包含所有这些信息,请参见标题过程语言