错误:libpython3.3m.so.1.0 not found 或者 libpython3.4m.so.1.0 没有那个文件或目录
以下演示的是同一个问题,只是版本不一样导致的有一些文件命名不一样。
plpython3.so是Python3.3的动态库名称,
plpython3.4m.so是Python3.4的动态库名称。
PostgreSQL 的版本对应的 Python 的版本问题。
PostgreSQL版本 | Python版本 |
---|---|
9.x | 3.3 |
10.x | 3.4 |
11.x | 3.6 |
(唯独跳过了Python3.5的对应pg版本) - -!
更新此处:有一个方法来 python 兼容不同版本的 pg
此路径下的plpython3.so
将python35版本的plpython35.so文件替换之。(可以上网找)
这样即使是10.x版本的pg也能兼容Python35了。
Python和PostgreSQL的安装这里不提。
在安装Python的时候,编译时:./configure xxxxx --enable-shared
意思就是:启用共享动态库版本,生成可以共享的接口,供其他开发者使用。默认是静态库版本:–enabled-static
上图,not found
需要通过添加环境变量:LD_LIBRARY_PATH 指定所需要动态库的位置,如下。
先进行Python3.3的启动测试:
在测试 plpython3.so动态库测试。此时能寻到依赖包的确切位置。
此为python3.3的安装成功截图
此为python3.4的安装成功截图
确定准备好依赖库之后,则要重新启动postgresql。
先关闭:systemctl stop postgresql-9.6.service
需要用原命令启动。(需要用postgres用户启动,非root用户)
/opt/PostgreSQL/9.6/bin/pg_ctl -D /opt/PostgreSQL/9.6/data -l /opt/PostgreSQL/9.6/data/log1 start
-D是指定数据路径,-l是指定log路径
在这一系列步骤下来,主要的几个问题点是:
2019年2月28日14:39:30 补充
–enable-static:生成静态链接库
–enable-shared:生成动态链接库
参考文档连接:https://blog.csdn.net/daixiaoxiong/article/details/6657470
在编译过程中,就将静态库中的代码载入程序,由此生成出的可执行程序在运行中不再需要静态库,
但因为库中的程序代码被复制进目标程序中,因此生成的程序体积会比较大。linux中,静态库的命名规则通常为lib*.a
优点
缺点
又称为共享库,即编译时只对库进行简单的引用而不载入程序,在程序运行时才将动态库中的代码载入内存使用,
因此使用动态库的程序在运行时需要其相关的动态库都存在。linux中,动态库的命名通常是*.so
优点
缺点