我一直在尝试使用 PL/Python 在 postgresql 中创建一些自定义函数。然而,一些 python 库导入失败,因为 PL/Python 无法访问 LD_LIBRARY_PATH 变量:
CREATE OR REPLACE FUNCTION pyfunc(smiles text)
RETURNS text
AS $$
from rdkit import Chem
<some code here>
$$ LANGUAGE plpython2u;
在这种情况下,我得到一个 ImportError,因为找不到共享对象 libRDKitRDBoost.so.1(存在于 LD_LIBRARY_PATH 目录中)。
我尝试以不同的方式定义 LD_LIBRARY_PATH (已在我的 bashrc 配置文件中定义):
- 在 postgresql 环境文件 (/etc/postgresql/10/main/environment) 中。
- 从 python 代码内部: os.environ['LD_LIBRARY_PATH'] = 'path_to_lib'
- 从 psql 提示符:\setenv LD_LIBRARY_PATH 'path_to_lib'
但到目前为止,没有任何结果。