2016-12-16 130 views
1

我有Oracle 11g在我的Ubuntu 16.04配置和它的工作完全正常。CX_Oracle導入錯誤libclntsh.so.12.1

以前我試圖安裝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

回答

6

在正試圖加載的cx_Oracle共享庫文件上運行ldd命令。您應該能夠在使用「小鬼」模塊發現正在加載的cx_Oracle模塊的位置,如下:

import imp 
imp.find_module("cx_Oracle") 

您可能會發現,它試圖加載的模塊發現某處你沒想到!

此外,當您運行命令pip安裝cx_Oracle確認它實際上是編譯和哪些文件正在鏈接。

我希望這些提示中的一個能夠幫助您找出配置中的問題。

+1

終於修好了!謝啦。在使用'ldd cx_Oracle.so'時我有這樣的輸出:'linux-vdso.so.1 =>(0x00007ffeb4dc3000)''libclntsh.so.12.1 =>找不到......'然後,我卸載了重新安裝的'oracle 11g'再次完成。清理了我的'pip'緩存並再次安裝了'cx_Oracle'包。現在一切正常。問題在於** pip cache **,因爲它正在使用先前提取的cx_oracle,這一直導致錯誤。 –