import cx_Oracle ImportError: DLL load failed: 找不到指定的模块。

我们知道,Python使用cx_Oracle连接oracle的三个步骤是:
1、先安装cx-Oracle包,地址:https://pypi.org/project/cx-Oracle/5.3/#files
2、下载Oracle客户端instantclient-basic-win64-12.rar(我的电脑是64位,12是版本,还有11、10等),解压后将oci.dll所在绝对路径添加到环境变量中。
3、将instantclient_12_2下的所有.dll文件拷贝到python根目录(即与python.exe同级)和F:pythonLibsite-packages目录下。

运行代码出现异常:import cx_Oracle ImportError: DLL load failed: 找不到指定的模块。
问题分析:

  • 百度了解决方案 发现1,2,3,步骤完全正确。步骤没问题
  • 然后就是cx-Oracle和instantclient-basic-win64-12.rar的版本对应问题,我装的cx_Oracle-7.3.0-cp35-cp35m-win_amd64.whl,问题不能解决;再卸载装cx_Oracle-7.2.0.tar,依然不能解决。
  • 网上说使用.exe可执行文件直接安装cx_Oracle可以正常安装;我就又卸载了cx_Oracle-7.2.0.tar,删除instantclient的环境变量; 网上下载了cx_Oracle-5.3-12c.win-amd64-py3.5-2.exe, 按照1,2,3步重新装了一次,成功了!

问题总结:
1、安装的cx-Oracle时使用.exe可执行程序双击安装,不要pip install XX.whl安装;
2、cx-Oracle版本需要与instantclient版本适应,我装的是12版(cx_Oracle-5.3-12c.win-amd64-py3.5-2.exe,instantclient-basic-win64-12.rar)。
3、也可以安装cx_Oracle-5.3-11c.win-amd64-py3.5-2.exe和instantclient-basic-win64-11.rar, 11是版本,64是计算机位数,都要对应。
4、如果计算机上已经安装了Plsql,那么先看下环境变量,应该已经配置了instantclient32,即32位的instantclient; 此时如果我们是64位计算机,要先安装cx_Oracle-5.3-11c.win-amd64-py3.5-2.exe,再解压instantclient-basic-win64-11.rar,不须再配置环境变量,只须把instantclient64位的所有.dll文件拷贝到python根目录(即与python.exe同级)和F:pythonLibsite-packages目录下即可。

原文地址:https://www.cnblogs.com/We612/p/12777459.html