我一直在为一个项目研究FHIR,我们使用PostgreSQL作为数据库。在阅读文档时,我开始了解PL/Python并决定给予一下,但我无法安装Python扩展。
当我运行命令CREATE EXTENSION pypthon3u;
时,我得到以下错误
Could not load library "C:/Program Files/PostgreSQL/12/lib/plpython3.dll": The specified module could not be found.
字符串
我已经检查了这个SO answer,但它不能帮助。
我的PostgreSQL版本:PostgreSQL 12.2,由Visual C++ build 1914编译,64位
安装的Python版本:3.7.7(64位)
操作系统信息:Windows 10企业版版本1909操作系统版本18363.657
对我来说,它看起来像是不正确的Python版本,但我正在安装python 3.7.* 版本,PostgreSQL在安装目录中的doc\installation-notes.html
中指定编译。
如有任何帮助,我们将不胜感激。
4条答案
按热度按时间yr9zkbsy1#
即使您使用EDB安装程序的Stack Builder来安装Python,您仍然必须按照说明“确保它们包含在启动数据库服务器的PATH变量中”。我不得不在系统级别上这样做,因为我找不到为单个服务设置PATH的方法。
然后还需要设置PYTHONPATH,这似乎没有文档记录。
因此,我最终将
c:\edb\languagepack\v1\Python-3.7
添加到PATH中,并使用c:\edb\languagepack\v1\Python-3.7\Lib
创建PYTHONPATH。n3ipq98p2#
我不得不添加包含plpython3.dll的目录做系统/用户变量(windows)。
fnx2tebb3#
我也在尝试。虽然我不是Maven,我的错误有点不同,但这里有几件事需要检查:
share\extension\
下,应该有plpython3u.control
和plpython3u--1.0.sql
才能执行CREATE EXTENSION plpython3u;
lib\
下,应该有plpython3.dll
。这可能是在上述步骤之后创建的。lib\
在PATH
中。PYTHONHOME
应在系统/用户环境中设置,或者应在服务器启动之前设置。版本似乎没有设置这个名称重要。plpython3.dll
似乎在寻找python39.dll
,但我可以在3. 8安装中使用它。我使用的是Postgres的压缩版本,所以下面是我运行服务器的方法。
字符串
PS:没有
PYTHONHOME
,服务器崩溃。服务器本身或psql
重新启动服务器,但我不确定pgAdmin
。cidc1ykv4#
添加到路径不会有帮助,数据库将在Postgres用户下运行,因此将其添加到路径中没有任何好处,因为数据库运行者不是您