1

我正在尝试在 PostgreSQL 9.3.3 上安装Multicorn扩展,但我遇到的问题是此扩展仅适用于 Python 2.7 或 3.3,而我的操作系统(Centos 6.5)上的默认 python 版本是 2.6,我无法更改它在不破坏整个系统的情况下。

我已经将 python 2.7 与默认版本一起安装,并从将 makefile 中的 python 引用/路径更改为 python 2.7 编译了 Multicorn 扩展,但是我在使用 Postgres 中的扩展时遇到了问题。

创建扩展命令工作得很好:

CREATE EXTENSION multicorn;

但是创建服务器失败:

CREATE SERVER csv_srv foreign data wrapper multicorn options (wrapper 'multicorn.csvfdw.CsvFdw');
ERROR:  Error in python: ImportError
DETAIL:  No module named multicorn

有没有解决这个问题或至少提示要寻找什么?

我的假设是,即使扩展本身是使用对 python 2.7 的引用进行编译的,并且所有文件都复制到了正确的文件夹/usr/local/lib/python2.7/dist-packages/multicorn-1.0.2-py2.7-linux-x86_64.egg/multicorn中,PostgreSQL 本身仍然使用系统默认的 python 2.6 版本,因此无法加载模块。有没有办法覆盖 Postgres 使用的 python 版本?那能解决问题吗?

4

1 回答 1

0

您需要针对 Python 2.7 重新编译 PL/Python。

现在 PL/Python 将继续使用 Python 2.6。它们不是二进制兼容的,并且有单独的 sonames,libpython2.7.so并且libpython2.6.so. 因此,只需更改PATHandLD_LIBRARY_PATH将无济于事。

我会通过下载 PostgreSQL SRPM、修改规范文件以使其针对 python 2.7 并重建 RPM 来做到这一点。

于 2014-03-26T00:50:54.210 回答