我应该将此作为对 Peter Eisentraut 答案的评论发布,但我一直按 Enter 键,然后在评论完成之前意外发布;另外,我想添加一些链接和其他内容:
我最终完全按照 Peter 的建议去做了——从源代码重新构建并在EnterpriseDB 论坛上发布此问题。出于某种原因,我的论坛帖子出现在一个我以前从未听说过的用户名下,我什至可以阅读该用户的所有帖子。也许他/她在我之前登录,在我看来他们论坛软件中的一个相当大的错误:-(
无论如何,构建 plpython 二进制文件只不过是下载最新的 PostgreSQL 源代码,解压它并将一些参数传递configure
给文档:
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 的二进制文件)位于 EnterpriseDB 默认安装目录中,并在同一文件夹中/Library/PostgreSQL/9.0/lib/postgresql/plpython2.so
带有指向它的符号链接。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
嗯,也许这应该进入维基......