PostgreSQL FDW扩展Multicorn - “错误:ImportError”
我正在尝试在 PostgreSQL 9.3.3 上安装 Multicorn 扩展,但我遇到的问题是这个扩展只支持 Python 2.7 或 3.3,而我操作系统(Centos 6.5)上默认的 Python 版本是 2.6,我不能随便更改它,否则可能会导致整个系统出问题。
我在默认版本旁边安装了 Python 2.7,并从 源代码 编译了 Multicorn 扩展,把 makefile 中的 Python 路径改成了 Python 2.7,但在 PostgreSQL 中使用这个扩展时遇到了麻烦。
创建扩展的命令运行得很好:
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 版本,因此无法加载这个模块。有没有办法覆盖 PostgreSQL 使用的 Python 版本?这样能解决问题吗?
1 个回答
0
你需要重新编译PL/Python,让它支持Python 2.7。
现在PL/Python还是在用Python 2.6。这两个版本不兼容,而且它们有不同的名字,比如libpython2.7.so
和libpython2.6.so
。所以仅仅改变PATH
和LD_LIBRARY_PATH
是没用的。
我会通过下载PostgreSQL的SRPM,修改里面的spec文件,让它指向Python 2.7,然后重新构建RPM包。