web-dev-qa-db-ja.com

Pythonモジュール "cx_Oracle"モジュールが見つかりませんでした

最近、リモートのOracleデータベースサーバーに接続するために、cx_Oracleモジュールをマシンにインストールしました。 (私の側にはOracleクライアントがありません)。

  • Python:バージョン2.7 x86
  • Oracle:Verision 11.1.X x64
  • Cx_Oracle:Verion-5.1.2-11g.win32-py2.7

その後、スクリプトを実行するたびに失敗し、次のメッセージが出力されます。

ImportError:DLLロードに失敗しました:指定されたモジュールが見つかりませんでした。

Here に関連する投稿を見つけたので、pythonスクリプトが呼び出される側にOracleクライアントが必要かどうか疑問に思っています。

誰かが私を助けることができますか?前もって感謝します。

11
Chen Xie

はい、Oracleクライアントをインストールする必要があります。

cx_Oracle README から

「cx_Oracleを使用するには、Oracleクライアント(またはサーバー)のインストールが必要であることに注意してください。クライアントの完全インストールに付属するツールが必要ない場合は、インストールがはるかに簡単なインスタントクライアントをインストールすることをお勧めします。 「」

[〜#〜]編集[〜#〜]インスタントクライアントへのリンク: http://www.Oracle.com/technetwork/ database/features/instance-client/index-097480.html

8
bpgergo
# - This import requires appropriate oraocciXX.dll to be available in PATH (on windows)
#   (Probably LD_LIBRARY_PATH or LD_LIBRARY_PATH64 on POSIX)
#     where XX is the Oracle DB version, e.g. oraocci11.dll for Oracle 11g.
# - This dll is part of the Oracle Instant client pkg available here:
#     http://www.Oracle.com/technetwork/database/features/instant-client/index-097480.html
# - Also ensure that python, cx_Oracle and Oracle Client are of same Arch (32 or 64-bit)
#
import cx_Oracle

次のArch(32ビットまたは64ビット)を見つけることができます。

  • コマンドラインでインタラクティブモードでpythonを実行するだけで、Pythonを使用できます。
  • cx_Oracle:ダウンロードしたファイルの名前を確認します。
  • Oracleクライアント:
    • クライアントパッケージの一部であるsqlplusを実行します
    • タスクマネージャを起動し、sqlplus.exeの横に「* 32」があるか(= 32ビット)、ないか(= 64ビット)を確認します。
    • sqlplusがない場合は、dumpbin /headers oraocciXX.dllを使用してください
  • POSIXを使用している場合は、おそらくすでにご存知でしょう。 file oraocciXX.soを使用する

最後に、まだ理解できない場合は、ダミーの指示が必要です。

  • 32ビットバージョンのpython、cx_Oracle、およびOracle InstantClientがインストールされていることを確認してください。これらも64ビットである可能性がありますが、3つすべてで同じである必要があります。混合して一致させることはできません。リンク:
  • ウィンドウズ:
    • set PATH=%PATH%;C:\ProgFiles\OraClient\11_2
  • POSIX(Linux/Unix/Solaris ...)<-未テスト..
    • export LD_LIBRARY_PATH=/path/to/your/32bit/oraocciXX.so
    • (64ビット)export LD_LIBRARY_PATH64=/path/to/your/64bit/oraocciXX.so
  • path-to-python/python.exe -c "import cx_Oracle"を実行して、セットアップが機能しているかどうかをテストします。
    • 印刷する場合
    • 何も:それからそれは成功します。
    • ImportError: DLL load failed: The specified module could not be found:その後oraocciXXが見つかりません。環境変数を正しく設定します。
    • ImportError: DLL load failed: %1 is not a valid Win32 application:32/64ビットの不一致があります。
11
Kashyap

この問題を何日も解決しようとした後、私はset PATH=%PATH%:<insert Oracle home here>私のためにトリックをしませんでした。 Windows XPシステムプロパティに移動し、Oracleホームを「システム変数」の下の「パス」変数に追加する必要がありました。

2
veuncent

まだコメントできません: ただし、上記のuniquephaseの場合は、.exeと.dllのアクセス許可をチェックして、実行可能であることを確認してください。

それで、それを機能させるために私がしなければならなかったステップ。

ここからインスタントクライアントを解凍します。 ---(http://www.Oracle.com/technetwork/topics/winx64soft-089540.html

chmod + x * .exe * .dll(私はcygwinを使用しています)。

完全を期すために、cygwinを使用してpip経由でcx_Oracleをインストールすることはできませんでした。

そのため、標準のdist python(non-cygwin))を使用し、Windowsインストーラーを介してcx_Oracleをインストールする必要がありました。

また、f:/ opt/Instantclient_12_1(Oracle Instant Clientをインストールした場所)をWindowsパスに追加する必要がありました([システム]-> [高度なシステムプロパティ]-> [環境変数]-> [システム変数]を使用)。

0
chai