首页 > 解决方案 > PL/Python 无法访问系统变量 (LD_LIBRARY_PATH)

问题描述

我一直在尝试使用 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 配置文件中定义):

  1. 在 postgresql 环境文件 (/etc/postgresql/10/main/environment) 中。
  2. 从 python 代码内部: os.environ['LD_LIBRARY_PATH'] = 'path_to_lib'
  3. 从 psql 提示符:\setenv LD_LIBRARY_PATH 'path_to_lib'

但到目前为止,没有任何结果。

标签: pythonpostgresqlpostgres-plpython

解决方案


推荐阅读