这就是我的所作所为:
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,它遇到了很多麻烦。但是,C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.91_x-ww_0de56c07
中第一个缺少的.dll(msvcr80.dll)实际上是存在。
答案 0 :(得分:17)
好的,最终解决了这个问题(不确定是否所有步骤都是必要的,并且不知道为什么到目前为止这只有这个并且只有这个有效):
答案 1 :(得分:9)
帮助遇到同样问题的其他人:
此错误告诉导入模块时某些DLL之间的32-64位不匹配。可能性是:
请记住,cx_Oracle使用必须安装在您计算机上的标准Oracle客户端(在OCI级别)。它在几个地方搜索oci.dll,包括 PATH 。如果它找到错误版本客户端的oci.dll,则会出现错误。
如果您在 PATH 环境变量中获得此错误检查路径列表。它可能包含错误版本的Oracle客户端的BIN文件夹的路径。如果您有多个客户端,请在 PATH 中指定相应的客户端,或者安装适当的客户端。
注意: ORACLE_HOME对cx_Oracle没有影响。在我的情况下,仅改变PATH有帮助。我认为Ruben的解决方案是有效的,因为第3项('将此路径添加到“Path”环境变量')。
答案 2 :(得分:4)
我在win 7(64位)上使用python35 64位和oracle express。
我使用pip3(pip3 install cx_Oracle
)安装了cx_Oracle,而不是从pypi下载安装程序。
我遇到了同样的问题。
我按照上面的指导原则解决了这个问题,但是我从{{3}下载了64位版本的即时客户端(instantclient-basic-windows.x64-11.2.0.4.0.zip),而不是32位客户端。 }。
然后我将它提取到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
效果很好
答案 3 :(得分:2)
简单方法:
cx_Oracle-5.1.3-11g.win32-py2.7.exe
instantclient_12_1
并将其移至C:\Python27
C:\Python27\instantclient_12_1
答案 4 :(得分:2)
设置的相同ImportError
:
我解决了将msvcr100.dll
文件复制到<oracle_instant_client_dir>
答案 5 :(得分:2)
如果在PATH环境变量中Oracle前面有任何无效/无法访问的UNC路径,那么导入cx_Oracle(至少从5.1.2开始)似乎会失败(具有相同的错误)。 / p>
修复UNC路径(与Oracle无关)解决了这个问题。
答案 6 :(得分:1)
如果你使用conda作为包管理器,克服DLL的一种方法是通过执行conda install oracle-instantclient
来安装它来安装oracle-instantclient。这修复了我无法通过手动安装Oracle的即时客户端来解决的依赖性。
答案 7 :(得分:0)
这是我第二次提出这个问题,我觉得有必要发布我所做的事情:
我正在使用:
我没有成功安装Python和cx_Oracle 64位。
只有当我尝试32位版本并遵循@rob应答指令
时,它才有效答案 8 :(得分:0)
我在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
答案 9 :(得分:0)
我遵循的步骤:
下载智能客户端instantclient-basic-windows.x64-12.1.0.2.0.zip
摘录并复制到#your目录#\ instantclient_12_1
上面的目录包含dll的
使用#your目录#\ instantclient_12_1附加PATH变量并创建env变量ORACLE_HOME = #your directory#\ instantclient_12_1
下载并安装cx_Oracle-5.2.1-11g.win-amd64-py2.7.exe
打开空闲类型导入cx_Oracle
答案 10 :(得分:0)
如果您在Windows上使用Anaconda,请尝试:
conda install cx_oracle
你的cmd上的
- &GT;这个
答案 11 :(得分:0)
我知道这是一篇过时的文章,但是今天我遇到了这个问题,所有解决方案都无效。我认为这可以解决与现在同样问题的其他人。
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解决了该问题