Skip to main content
 首页 » 编程设计

python之libclntsh.so.12.1 的 CX_Oracle 导入错误

2025年05月04日27dyllove98

我在我的 Ubuntu 16.04 中配置了 Oracle 11g,它运行良好。

之前我尝试安装 Oracle 12c,但出现了一些错误,所以我将其删除并安装了 11g。

现在,我的问题是,当我尝试在 python 中使用 import cx_Oracle 时,它会出现 libclntsh.so.12.1 的导入错误.

这里是整个输出:

>>> import cx_Oracle 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
ImportError: libclntsh.so.12.1: cannot open shared object file: No such file or directory 

我的 .bashrc 文件有这些条目:

export PATH="/home/marvin/anaconda2/bin:$PATH" 
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe 
export ORACLE_SID=XE 
export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh` 
export ORACLE_BASE=/u01/app/oracle 
export LD_LIBRARY_PATH=$ORACLE_HOME/lib 
export PATH=$ORACLE_HOME/bin:$PATH 

为什么还是要考Oracle 12c? 11g 配置或 12c 卸载是否有错误?

我已经尝试通过 pip 卸载并重新安装 cx_oracle。

请您参考如下方法:

在它试图加载的 cx_Oracle 共享库文件上运行 ldd 命令。您应该能够使用“imp”模块找到正在加载的 cx_Oracle 模块的位置,如下所示:

import imp 
imp.find_module("cx_Oracle") 

您可能会发现它试图加载的模块位于您意想不到的地方!

此外,当您运行命令 pip install cx_Oracle 时,请确认它实际上正在编译以及正在链接哪些文件。

我希望这些提示之一能够帮助您找出配置问题所在。