2016-12-16 12 views
1

私はOracle 11gが私のUbuntu 16.04に設定され、正常に動作しています。libclntsh.so.12.1のCX_Oracleインポートエラー

私はOracle 12cをインストールしようとしましたが、これはいくつかのエラーを出していたので、削除して11gをインストールしました。

私の問題は、import cx_Oraclepythonに使用しようとすると、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アンインストールで何らかのエラーがありますか?

すでにcx_oracleをアンインストールして再インストールしようとしました。pip経由です。

答えて

6

ロードしようとしているcx_Oracle共有ライブラリファイルでlddコマンドを実行します。あなたは、次のようにロードされているcx_Oracleモジュールの場所を見つけるために、モジュールを「IMP」を使用することができるはずです。

import imp 
imp.find_module("cx_Oracle") 

あなたはそれをロードしようとしているモジュールがどこかで発見されたことを発見することがありあなたは期待していませんでした!

また、pip installコマンドを実行すると、cx_Oracleが実際にコンパイルしていることと、リンクされているファイルがあることを確認します。

これらのヒントの1つが、問題の設定に役立つことを願っています。

+1

最終的に修正!ありがとう。 'linux-vdso.so.1 =>(0x00007ffeb4dc3000)' 'libclntsh.so.12.1 => not found ...'その後、私は再インストールされた 'oracle 11g'をアンインストールしました。完全に再び。私の 'pip'キャッシュをきれいにし、' cx_Oracle'パッケージを再度インストールしました。今はすべて正常に動作します。問題は、以前にフェッチされたcx_oracleを取っていたので、** pip cache **でエラーが発生していました。 –

関連する問題