この記事では、Python で cx_Oracle モジュールをインストールする際の一般的な問題と解決策を主に紹介し、Windows プラットフォームと Linux プラットフォームで Python で cx_Oracle モジュールをインストールする場合の一般的な問題、解決策、および関連する注意事項を説明します。この記事の例を参照してください
Python で cx_Oracle モジュールをインストールする場合の一般的な問題と解決策について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
cx_Oracle をインストールまたは使用するときは、libclntsh.so.10.1 などの Oracle リンク ライブラリを使用する必要があります。そうしないと、さまざまなエラー メッセージが表示されます。
このリンク ライブラリは、Oracle Instant Client をインストールすることで入手でき、数百メガバイトの Oracle クライアントをインストールする必要がなくなります。
ソフトウェアのダウンロードアドレス:
cx_Oracleのホームページ: cx-oracle.sourceforge.net/
必要なOracleリンクライブラリのダウンロードアドレス: www.oracle.com/technology/software/tech/oci/instantclient/index .html
一般的なエラーと解決策:
One.win32 バイナリのインストール
Windows に cx_Oracle-5.0-10g.win32-py2.6.msi をインストールした後、インポートすると、次のエラーが発生します。 DLL ロードの失敗は次のように報告されます:
IDLE 2.6.1
>>> import cx_Oracle Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> import cx_Oracle ImportError: DLL load failed: 找不到指定的程序。
解決策:
Oracle サイトから instantclient-basic-win32-10.2.0.4.zip をダウンロードし、oci をコピーします。 .dll ファイルを Python インストール ディレクトリの Lib/site-packages (C:/Python26/Lib/site-packages
II など) にコピーします。linux
でのバイナリのインストール。linux_x86_64 の下に cx_Oracle-5.0 .1 をインストールします。 -10g-py24-1.x86_64.rpm はエラーを報告します。
[root@BJ-UPDATE-01 ~]# rpm -ivh cx_Oracle-5.0.1-10g-py24-1.x86_64.rpm error: Failed dependencies: libclntsh.so.10.1()(64bit) is needed by cx_Oracle-5.0.1-1.x86_64
解決策:
cx-oracle.sourceforge.net/BUILD.txtを参照してください
Oracleサイトからbasic-10.2.0.4.0-linux-x86_64.zipを/optディレクトリにダウンロードして解凍します。 libclntsh.so.10.1 に移動し、/opt/instantclient_10_2 ディレクトリに環境変数を設定します
次の 2 行を追加します:
vi /root/.bash_profile
このリンク ライブラリのシンボルを作成します Link
export ORACLE_HOME=/opt/instantclient_10_2 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
--nodeps パラメータを追加するように注意してください。追加しないと、上記のエラーが報告されます
cd $ORACLE_HOME ln -s libclntsh.so.x.x libclntsh.so
。 上記のように環境変数とシンボリック リンクを設定し、linux_x86_64 でのソース コードのインストールで Python set
up.py ビルドを実行すると、コンパイル中のエラー メッセージは次のとおりです:Connection.c:1169: 警告: このステートメントは次のとおりです。動作しません Connection.c:1171: エラー: 'udt_Connection' には名前がありません 'environment' のメンバーです
Connection.c:1172: 警告: ('Environment_CheckForError') 引数 1 を渡すときに互換性のないポインタ型の間で変換しますConnection .c:1172: 警告: 引数 2 ('Environment_CheckForError') を渡しています )
Connection.c:1172: エラー:
関数に指定された引数が多すぎます
'Environment_CheckForError'
Connection.c:1176: エラー: 'udt_Connection' にはno name 'session' Handle' member
解決策: このエラーはバージョン
5.0.3 では発生しません。ORACLE_HOME の下に include
ディレクトリが必要であることに注意してください。このディレクトリにコンパイルされるソース ファイルは Oracle Instant Client にありますが、このクライアントには含まれません。 Windows クライアントのディレクトリ D:/oracle/product/10.2.0/client_1/oci/include からコピーしました。 4. インポート エラー[root@BJ-UPDATE-01 ~]# rpm -ivh --nodeps cx_Oracle-5.0.1-10g-py24-1.x86_64.rpm
#5.0.3版本不用加--nodeps参数
>>> import cx_Oracle Traceback (most recent call last): File "<stdin>", line 1, in ? ImportError: /usr/lib/oracle/10.2.0.4/client64//lib/libnnz10.so: cannot restore segment prot after reloc: Permission denied >>> import cx_Oracle Traceback (most recent call last): File "<stdin>", line 1, in ? ImportError: /usr/lib/oracle/10.2.0.4/client64//lib/libclntsh.so.10.1: cannot restore segment prot after reloc: Permission denied >>> import cx_Oracle >>>
chcon -t texrel_shlib_t cd $ORACLE_HOME/libnnz10.so
chcon -t texrel_shlib_t cd $ORACLE_HOME/libclntsh.so.10.1
selinux をオフにします:
コマンドを実行します: vim /etc/selinux/config selinux=enforcing または permissive を無効に変更します
コマンドを実行します: setenforce 0 データサイエンスにおける Python の応用 3. Python の基本的な入門チュートリアル 以上がcx_Oracle のインストール時に発生したエラーと解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。Traceback (most recent call last):
File "oracle_conn.py", line 9, in ?
connection = cx_Oracle.Connection(u"oracle/oracle123@CCIP")
cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle