web-dev-qa-db-ja.com

cx_Oracle:ImportError:DLL load failed:このアプリケーションは失敗しました

私がやったことは次のとおりです。

  1. 私はWindowsを使用していますXP SP3
  2. すでにPython 2.7.1がインストールされています。
  3. instantclient-basic-nt-11.2.0.3.0.Zipをダウンロードして解凍し、C:\Program Files\Oracle\instantclient_11_2に入れました。
  4. このパスをWindows Path環境変数に追加しました。
  5. このパスを値として保持する新しい環境変数Oracle_HOMEを作成しました。
  6. cx_Oracle-5.1.2-11g.win32-py2.7.msiをインストールしました。

そして、import cx_Oracleを実行すると、私が得るのは

Traceback (most recent call last): 
  File "<string>", line 2, in <module> 
ImportError: DLL load failed: This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.

明らかにcx_Oracleをアンインストール/再インストールしたことが何度かありましたが、実際には何も役に立たないようです。誰でもこれを修正する方法の手がかりを提供できますか?

[〜#〜] update [〜#〜]

Dependency Walkerを実行すると、多くの問題が発生します。ただし、最初に不足している.dll(msvcr80.dll)は、実際にはpresent in C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.91_x-ww_0de56c07です。

enter image description here

16
RubenGeert

OK、最終的に問題を解決したもの(すべての手順が必要かどうかわからず、なぜこれだけがこれまでうまくいったのか分かりません):

  • here からversion 12をダウンロードして解凍します。
  • Oracle_HOME」をWindows環境変数として追加し、その値を...\instantclient_12_1に設定します(格納フォルダーではありません! )。
  • この同じパスを「Path」環境変数に追加します。
  • 今だけ cx_Oracle をインストールします。
17
RubenGeert

同じ問題を抱えている他の人を助けるために:

このエラーは、モジュールのインポート中にいくつかのDLLの間で32-64ビットの不一致について通知します。可能性は次のとおりです。

  1. Pythonとcx_Oracleの異なるアーキテクチャ(Windowsのcx_Oracleインストーラーが適切な場合に警告するため、あまり可能性はありませんPythonが見つかりませんでした)。
  2. Cx_Oracleライブラリとoci.dllの異なるアーキテクチャ(可能性が高い)。

Cx_Oracleは、マシンにインストールする必要がある標準のOracleクライアント(OCIレベル)を使用することに注意してください。 [〜#〜] path [〜#〜]を含む複数の場所でoci.dllを検索します。間違ったバージョンのクライアントのoci.dllが見つかった場合、エラーが表示されます。

[〜#〜] path [〜#〜]環境変数でこのエラーチェックパスリストを取得した場合。間違ったバージョンのOracleクライアントのBINフォルダーへのパスが含まれている可能性があります。複数のクライアントがある場合、[〜#〜] path [〜#〜]で適切なクライアントを指定するか、適切なクライアントをインストールします。

注: Oracle_HOMEはcx_Oracleには影響しません。私の場合、PATHの変更のみが役立ちました。ルーベンのソリューションは、項目3(「この同じパスを「パス」環境変数に追加する」)が原因で機能すると思います。

9
greatvovan

Win7(64ビット)でpython35 64ビットとOracle Expressを使用しています。 pip3を使用してcx_Oracleをインストールしました(pip3 install cx_Oracle)pypiからインストーラーをダウンロードする代わりに。

私は同じ問題に直面しました。

上記のガイドラインに従って解決しましたが、32ビットクライアントの代わりに、64ビットバージョンのインスタントクライアント(instantclient-basic-windows.x64-11.2.0.4.0.Zip)を http:/ /www.Oracle.com/technetwork/topics/winx64soft-089540.html

次に、それをc:\ oraclexeに抽出しました。そして、これらの環境変数を追加しました

set Oracle_BASE=C:\oraclexe
set Oracle_HOME=C:\oraclexe\app\Oracle\product\11.2.0\server
set PATH=C:\oraclexe\instantclient_11_2;%PATH%

そして、Django migrateコマンド:
python manage.py migrate

それは素晴らしかった

4
Jaya Nandan

以下の設定で同じImportErrorが発生しました:

  • Windows 10 x64
  • Oracle Instant Client 12_1 x64
  • Python 2.7.11 x64
  • cx_Oracle cx_Oracle-5.2-12c.win-AMD64-py2.7

msvcr100.dllファイルを<Oracle_instant_client_dir>にコピーして解決しました

2
Sergey Stepanov

簡単な方法:

  • Cx-Oracleがインストールされていることを確認してください。cx_Oracle-5.1.3-11g.win32-py2.7.exeがあります
  • instantclient_12_1をダウンロードして解凍し、C:\Python27に移動します
  • 環境変数C:\Python27\instantclient_12_1を追加します
  • コンピュータを再起動してください
2
rob

この問題もあり、PATH環境変数でOracleの前に無効な/到達不能なUNCパスがある場合、cx_Oracle(少なくとも5.1.2の時点で)のインポートは(同じエラーで)失敗するようです。

UNCパス(Oracleとは無関係)を修正して、問題を解決しました。

2
jasonobrien

Condaをパッケージマネージャーとして使用している場合、DLLを発行してOracle_instantclientをインストールするためのconda install Oracle-instantclient。これにより、Oracleのインスタントクライアントを手動でインストールしても修正できなかった依存関係が修正されました。

1
user3819536

私が従ったステップ:

  1. スマートクライアントinstantclient-basic-windows.x64-12.1.0.2.0.Zipをダウンロードしました

  2. 解凍して#your directory#\ instantclient_12_1にコピーしました

    上記のディレクトリにはdllが含まれています

  3. PATH変数に#your directory#\ instantclient_12_1を追加し、作成したenv変数Oracle_HOME = #your directory#\ instantclient_12_1

  4. Cx_Oracle-5.2.1-11g.win-AMD64-py2.7.exeをダウンロードしてインストールします

  5. オープンアイドルタイプインポートcx_Oracle

0
rupesh patil

これは古い投稿であることは知っていますが、今日はこの問題があり、解決策はありませんでした。私は、これが今と同じ問題を抱えている他の人たちのために働くことができると思います。

Pythonバージョン:2.7.15(64ビット)cx_Oracleバージョン:6.4.1 Oracle Instant Client:18.3

正しい順序でevryの手順を実行しても、次のエラーが表示され続けました。

cx_Oracle.DatabaseError:DPI-1047:Oracleクライアントライブラリをロードできません

Oracle Instant Clientバージョンを12.1にダウングレードすることで解決しました

0

windowsでAnacondaを使用している場合:

conda install cx_Oracle

あなたのcmdで

->これ

0
user6405238

この質問に2度目に来たように、私がやったことを投稿する必要があると感じています。

私は使用しています:

  • 8 64ビットで勝つ
  • Python 2.7

Pythonおよびcx_Oracle 64ビットのインストールに成功しませんでした。

32ビットバージョンを試して、@ robの回答手順に従った場合にのみ機能しました

0
Marcelo Assis

DLL Windowsマシンでロードに失敗しました。Oracleクライアントをインストールし、変数を設定し、cx_Oracle-5.1.3-11g.win32-py2.7.exeファイルを実行しました。

しかし、cx_Oracleをeasy_setupでインストールすると、問題は修正されました。

C:\Python27\Scripts\easy_install.exe cx_Oracle-5.1.3-11g.win32-py2.7.exe
0
maxim