cx_Oracle のインストール時に発生したエラーと解決策

Y2J
リリース: 2017-05-08 16:51:10
オリジナル
3155 人が閲覧しました

この記事では、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
ログイン後にコピー

source /root/.bash_profile を実行して変更を有効にします

このリンク ライブラリのシンボルを作成します Link

export ORACLE_HOME=/opt/instantclient_10_2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
ログイン後にコピー
cx_Oracle を再インストールします

--nodeps パラメータを追加するように注意してください。追加しないと、上記のエラーが報告されます

cd $ORACLE_HOME
ln -s libclntsh.so.x.x libclntsh.so
ログイン後にコピー

3. Linux でのソース コードのインストール

上記のように環境変数とシンボリック リンクを設定し、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参数
ログイン後にコピー
これは SELinux の制限によるものです。次のコマンドを実行して制限を解除します:
>>> 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
>>>
ログイン後にコピー

5. 実行時エラー

chcon -t texrel_shlib_t cd $ORACLE_HOME/libnnz10.so
chcon -t texrel_shlib_t cd $ORACLE_HOME/libclntsh.so.10.1
ログイン後にコピー
これはまだ制限です。 SELinux の場合、SELinux を無効に設定します

selinux をオフにします:

コマンドを実行します: vim /etc/selinux/config selinux=enforcing または permissive を無効に変更します

コマンドを実行します: setenforce 0



6. UNICODE インストール パッケージの問題

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
ログイン後にコピー
【関連する推奨事項】1.

データサイエンスにおける Python の応用

3. Python の基本的な入門チュートリアル

以上がcx_Oracle のインストール時に発生したエラーと解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!