実行している Windows のバージョンを教えてください。それは32または64ビットですか?
Oracle Instant Client は32ビットまたは64ビットですか?
Python インストールは32ビットまたは64ビットですか?
cx_oracle は正しいバージョンですか? 32または64ビット?
MSVCR90.dll は、Microsoft Visual C++ 2008 SP1 再頒布可能パッケージの一部です。
32 ビット版はこちらから、64 ビット版はこちらから入手できます。
C:\Program Files\Internet Explorer\Ieshims.dll
バージョンがWindows は Vista 以降です。
GPSVC.dll は に存在する必要がありC:\Windows\System32
ます。
Dependency Walker は、これらの最後の 2 つの DLL が欠落していると報告します。これは、IEFrame.DLL を使用し、遅延ロードされる Windows エラー報告で使用されているためです。つまり、実際には必要ない可能性があります。
cx_oracle を正常にインポートするには、その依存関係のバージョンが一致していることを確認する必要があることがわかりました。また、Oracle クライアントのインストールがご使用のものと一致ORACLE_HOME
し、PATH 変数に が含まれていることを確認する必要があります%ORACLE_HOME%/bin
。これは、環境変数またはレジストリで設定され、tnsnames.ora ファイルが TNS_ADMIN に設定されている値に存在する必要があります。Emmanuelの回答で述べたように、未設定の TNS_ADMIN 設定のデフォルト値は です%ORACLE_HOME%\network\admin
。
また、他のバージョンとは異なり、パス、ORACLE_HOME、または TNS_ADMIN が正しく設定または維持されていることを常に保証するわけではないため、どうしても必要な場合を除き、Oracle インストーラーのインスタント クライアント バージョンを使用することはめったにありません。見つかった。同じマシンに複数の Python バージョンまたは Oracle バージョンがある場合、これはさらに複雑になります。
それらを明示的に設定するには、環境変数 (ユーザーまたはシステムのいずれか) を使用できます。これは、コントロール パネルのシステム アイコン、高度なシステム設定タスク、高度なタブ、環境ボタンの下にあります。
に関してInterfaceError: Unable to acquire Oracle environment handle
、これは OCI.dll を解決しない場合とは対照的に、cx_Oracle が使用する OCI.dll を認識しない場合に特に発生します。通常、これは、OCI.dll を含む 2 つ以上の検索ディレクトリを含む PATH 変数が原因です。
具体的には、PATH にインスタント クライアント インストールまたは Oracle 11G XE インストールのいずれかからの OCI.dll のインスタンスが 1 つだけ含まれていることを確認すると、問題が解決するはずです。
Oracle 11G XE をインストールする前にインスタント クライアントをアンインストールしましたか?
コマンドプロンプトに以下を貼り付けます。
echo The current ORACLE_HOME is %ORACLE_HOME%
echo The current TNS_ADMIN is %TNS_ADMIN%
echo The current PATH is %PATH%
これらの変数の現在の値を確認します。
その他のリソース