[英]cx_Oracle: ImportError: DLL load failed: This application has failed
這是我所做的:
instantclient-basic-nt-11.2.0.3.0.zip
,解壓后將其放入C:\\Program Files\\Oracle\\instantclient_11_2
。Path
環境變量中。ORACLE_HOME
將此路徑作為其值。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 幾次,但似乎沒有任何幫助。 任何人都可以提供如何解決這個問題的線索嗎?
更新
我運行了 Dependency Walker,但遇到了很多麻煩。 但是,第一個丟失的 .dll (msvcr80.dll) 實際上存在於C:\\WINDOWS\\WinSxS\\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.91_x-ww_0de56c07
。
幫助其他有同樣問題的人:
此錯誤說明導入模塊時某些 DLL 之間存在 32-64 位不匹配。 可能性是:
請記住,cx_Oracle 使用標准 Oracle 客戶端(在 OCI 級別),它必須安裝在您的機器上。 它在多個位置搜索 oci.dll,包括PATH 。 如果發現客戶端版本錯誤的oci.dll,就會出現錯誤。
如果出現此錯誤,請檢查PATH環境變量中的路徑列表。 它可能包含錯誤版本的 Oracle 客戶端的 BIN 文件夾的路徑。 如果您有多個客戶端,請在PATH 中指定合適的客戶端,或安裝合適的客戶端。
注意: ORACLE_HOME 對 cx_Oracle 沒有影響。 在我的情況下,只有改變 PATH 有幫助。 我認為 Ruben 的解決方案之所以有效,是因為第 3 項(“將相同的路徑添加到“路徑”環境變量中)。
我在win 7(64位)上使用python35 64位和oracle express。 我使用 pip3 ( pip3 install cx_Oracle
) pip3 install cx_Oracle
而不是從 pypi 下載安裝程序。
我遇到了同樣的問題。
我按照上述指南解決了這個問題,但我沒有下載 32 位客戶端,而是從http://www.oracle下載了 64 位版本的即時客戶端 (instantclient-basic-windows.x64-11.2.0.4.0.zip).com/technetwork/topics/winx64soft-089540.html 。
然后我將其解壓縮到 c:\\oraclex。 並添加了這些環境變量
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 遷移
它工作得很好
簡單的方法:
cx_Oracle-5.1.3-11g.win32-py2.7.exe
instantclient_12_1
並將其移動到C:\\Python27
C:\\Python27\\instantclient_12_1
設置發生了相同的ImportError
:
我解決了將msvcr100.dll
文件復制到<oracle_instant_client_dir>
也有這個問題,如果在 PATH 環境變量中的 Oracle 前面有任何無效/無法訪問的 UNC 路徑,似乎導入 cx_Oracle(至少從 5.1.2 開始)將失敗(出現相同的錯誤)。
修復 UNC 路徑(與 Oracle 無關)解決了該問題。
如果您使用 conda 作為包管理器,克服 DLL 問題的一種方法是通過執行conda install oracle-instantclient
。 這修復了我無法通過手動安裝 Oracle 的即時客戶端來修復的依賴項。
就像我第二次遇到這個問題一樣,我覺得有必要發布我所做的:
我正在使用:
我沒有成功安裝 Python 和 cx_Oracle 64 bits 。
它僅在我嘗試 32 位版本並遵循 @rob 回答說明時才有效
我在 Windows 機器上遇到了同樣的 DLL 加載失敗問題。 安裝 oracle 客戶端,設置變量,運行 cx_Oracle-5.1.3-11g.win32-py2.7.exe 文件。
但是,當我使用 easy_setup 安裝 cx_Oracle 時,它解決了這個問題。
C:\Python27\Scripts\easy_install.exe cx_Oracle-5.1.3-11g.win32-py2.7.exe
我遵循的步驟:
下載智能客戶端instantclient-basic-windows.x64-12.1.0.2.0.zip
提取並復制到#your directory#\\instantclient_12_1
上面的目錄包含dll的
將 PATH 變量附加到 #your directory#\\instantclient_12_1 並創建環境變量 ORACLE_HOME= #your directory#\\instantclient_12_1
下載並安裝 cx_Oracle-5.2.1-11g.win-amd64-py2.7.exe
打開空閑類型導入cx_Oracle
如果您在 Windows 上使用 Anaconda,請嘗試:
conda install cx_oracle
在你的 cmd 上
-> 這個
我知道這是一篇舊帖子,但我今天遇到了這個問題,但沒有一個解決方案有效。 我認為這可能適用於目前遇到相同問題的其他人。
Python 版本:2.7.15(64 位)cx_Oracle 版本:6.4.1 Oracle Instant Client:18.3
即使我按照正確的順序執行了每個步驟,我仍然收到以下錯誤:
cx_Oracle.DatabaseError:DPI-1047:無法加載 Oracle 客戶端庫
我通過將我的 Oracle Instant Client 版本降級到 12.1 解決了這個問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.