这是我做的:
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几次,但似乎没有任何帮助。任何人都可以提供一个线索如何解决这个问题?
UPDATE
我跑了Dependency Walker,它遇到了很多麻烦。但是,第一个丢失的.dll(msvcr80.dll)实际上存在于C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.91_x-ww_0de56c07
中。
我遵循的步骤:
如果你在Windows上使用Anaconda试试:
C:\Python27\Scripts\easy_install.exe cx_Oracle-5.1.3-11g.win32-py2.7.exe
在你的cmd上
- >这个
我知道这是一个老帖子,但我今天遇到了这个问题,没有一个解决方案有效。我认为这可能对其他人有同样的问题。
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来解决了这个问题
为了帮助其他人遇到同样的问题:
此错误告诉导入模块时某些DLL之间的32-64位不匹配。可能性是:
请记住,cx_Oracle使用必须安装在您的计算机上的标准Oracle客户端(在OCI级别)。它在几个地方搜索oci.dll,包括PATH。如果它找到错误版本的客户端的oci.dll,则会出现错误。
如果您在PATH环境变量中获得此错误检查路径列表。它可能包含错误版本的Oracle客户端的BIN文件夹的路径。如果您有多个客户端,请在PATH中指定相应的客户端或安装适当的客户端。
注意:ORACLE_HOME对cx_Oracle没有影响。在我的情况下,仅改变PATH有帮助。我认为Ruben的解决方案是有效的,因为第3项('将此路径添加到“Path”环境变量')。
我在win 7(64位)上使用python35 64位和oracle express。我使用pip3(pip3 install cx_Oracle
)安装了cx_Oracle,而不是从pypi下载安装程序。
我遇到了同样的问题。
我按照上面的指导解决了这个问题,但是我从http://www.oracle.com/technetwork/topics/winx64soft-089540.html下载了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
它工作得很好
简单的方法:
cx_Oracle-5.1.3-11g.win32-py2.7.exe
并将其移至instantclient_12_1
C:\Python27
同样的C:\Python27\instantclient_12_1
用于设置:
我解决了它将ImportError
文件复制到msvcr100.dll
如果在PATH环境变量中Oracle前面有任何无效/无法访问的UNC路径,那么导入cx_Oracle(至少从5.1.2开始)似乎会失败(具有相同的错误)。
修复UNC路径(与Oracle无关)解决了这个问题。
如果您使用conda作为包管理器,一种克服DLL的方法是通过执行<oracle_instant_client_dir>
来安装oracle-instantclient。这修复了我无法通过手动安装Oracle的即时客户端来解决的依赖关系。
这是我第二次提出这个问题,我觉得有必要发布我所做的事情:
我正在使用:
我没有成功安装Python和cx_Oracle 64位。
它只有在我尝试32位版本并遵循@rob应答指令时才有效
我在Windows机器上遇到DLL加载失败的问题。安装oracle客户端,设置变量,运行cx_Oracle-5.1.3-11g.win32-py2.7.exe文件。
但是,当我使用easy_setup安装cx_Oracle时,它修复了问题。
conda install oracle-instantclient