我在我的 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 时,请确认它实际上正在编译以及正在链接哪些文件。
我希望这些提示之一能够帮助您找出配置问题所在。
