11

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

  • Python: バージョン 2.7 x86
  • オラクル: バージョン 11.1.X x64
  • Cx_Oracle:バージョン-5.1.2-11g.win32-py2.7

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

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

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

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

4

4 に答える 4

11
# - 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

以下のアーキテクチャ (32 ビットまたは 64 ビット) を見つけることができます。

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

最後に、まだ理解できない場合は、ダミーの手順を参照してください。

  • 32 ビット バージョンの python、cx_Oracle、および Oracle Instant Client がインストールされていることを確認します。これらは 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 ビットの不一致があります。
于 2013-10-23T21:05:21.540 に答える
8

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

cx_ORAcle READMEから

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

Instant Client への編集リンク: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

于 2012-09-21T21:19:52.407 に答える
0

まだコメントできません :-( しかし、上記の uniquephase については、.exe と .dll のアクセス許可をチェックして、それらが実行可能であることを確認してください。

それで、それを機能させるために必要な手順。

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

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

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

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

また、f:/opt/instantclient_12_1 (Oracle インスタント クライアントをインストールした場所) を Windows パスに追加する必要がありました ([システム] -> [詳細システム プロパティ] -> [環境変数] -> [システム変数] を使用)。

于 2016-08-11T04:07:55.727 に答える