如何在Mac OSX上更改plpython使用的Python版本?

时间:2011-05-07 14:23:46

标签: macos postgresql plpython

我使用EnterpriseDB中的安装程序在Mac OSX 10.6上安装了PostgreSQL 9.0.4,并注意到plpython中使用python 2.5实现的存储过程。看看plpython库似乎证实了(otool在mac上做了ldd在linux上的做法):

host:~ user$ otool -L /Library/PostgreSQL/9.0/lib/postgresql/plpython2.so
/Library/PostgreSQL/9.0/lib/postgresql/plpython2.so:
/System/Library/Frameworks/Python.framework/Versions/2.5/Python (compatibility version 2.5.0, current version 2.5.1)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)

如何将其从Python 2.5更改为Python 2.6?

亲切的问候,

SSC

2 个答案:

答案 0 :(得分:3)

您需要从源代码重建。无法在二进制分发中更改它。

运行configure时,将环境变量PYTHON设置为您要使用的python二进制文件的完整路径,例如,

./configure --other-stuff ... PYTHON=/usr/bin/python2.6

我猜你可能会试图让EnterpriseDB人员更新他们的构建例程。不确定他们选择Python版本的标准。或者,也许从MacPorts安装。

答案 1 :(得分:1)

我应该将此作为对Peter Eisentraut的回答发表评论,但我会继续点击进入,然后在评论结束前不小心发帖;另外,我想添加一些链接和其他内容:

我最终做的正是彼得所建议的 - 从源头重建和posting this issue中的EnterpriseDB forum。出于某种原因,我的论坛帖子出现在我以前从未听过的用户名下,我甚至可以阅读该用户的所有帖子。也许他/她在我面前登录,在他们的论坛软件中看起来像一个非常大的bug: - (

无论如何,构建plpython二进制文件仅涉及download最新的PostgreSQL源代码,将其解压缩并将一些参数传递给configure documented

configure --with-python PYTHON=/usr/bin/python2.6

然后,运行make进行构建。尽管我的系统上的默认Python版本是2.6并且我明确地将其作为参数传递,但configure打印此消息

checking for python... /usr/bin/python2.6
checking for Python distutils module... yes
checking Python configuration directory... /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config
checking how to link an embedded Python application... -L/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config -lpython2.6 -ldl
checking whether Python is compiled with thread support... yes

但是构建的二进制文件仍然使用Python 2.7安装我甚至不记得我已安装:

otool -L <postgres build dir>/src/pl/plpython/plpython2.so 
<postgres build dir>/src/pl/plpython/plpython2.so:
    /Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.10)

这对我来说已经足够了,我所需要的只是一个2.5的更新版本。仍然很奇怪。

现有的plpython二进制文件(使用Python 2.5的二进制文件)驻留在/Library/PostgreSQL/9.0/lib/postgresql/plpython2.so的EnterpriseDB默认安装目录中,并在同一文件夹中包含符号链接plpython.so。我选择保持原文只是为了安全并重新符号链接而不是删除:

sudo mv plpython2.so plpython25.so
sudo cp <postgres build dir>/src/pl/plpython/plpython2.so plpython27.so
sudo ln plpython27.so plpython2.so
嗯,也许这应该进入维基...