我在用Python导入cx_Oracle时遇到问题。我知道这里已经讨论了许多与cxúu Oracle有关的问题,但在阅读了所有相关主题之后,似乎找不到解决问题的方法。
我有两台机器,一台是我的电脑,另一台是远程工作站,配置类似(Windows7,64位)。我需要在远程工作站上安装cx_Oracle,但它不起作用,而在我的计算机上运行良好(我可以成功导入模块并连接到数据库)。在远程工作站上,出现以下错误:Traceback (most recent call last):
File "", line 1, in
import cx_Oracle
ImportError: DLL load failed: The specified module could not be found.
我已经仔细检查了我的环境变量,并重新安装了几次cx_Oracle,但我无法让它正常工作。。。我做了一些关于这个问题的研究,我有点困在这里,我不明白为什么它在我的计算机上运行良好,但在这个远程工作站上没有(唯一的区别是这个远程工作站是一个虚拟机)。
有人知道可能是什么问题吗?
运行dependency Walker的两个cx_oracle.pyd(在我的计算机上运行正常,在cx_oracle不工作的远程工作站上运行),唯一的区别是在远程工作站上找不到dll MSVCR100和MSVCR90。
我设置了以下环境变量:C:\Oracle as ORACLE_BASE
C:\Oracle\instantclient_12_1作为ORACLE主页
C:\Oracle\instantclient_12_1添加到“Path”变量中
两台机器都是64位的,Windows7
我运行的是Python2.7.5
我在C:\Oracle\instantclient_12_1中解压缩了instantclient-basic-nt-12.1.0.1.0
我安装了cx_Oracle-5.1.2-11g.win32-py2.7s
在远程工作站上,sys.path告诉我:'C:\Python27\Lib\idlelib', 'C:\Windows\system32\python27.zip', 'C:\Python27\DLLs', 'C:\Python27\lib', 'C:\Python27\lib\plat-win', 'C:\Python27\lib\lib-tk', 'C:\Python27', 'C:\Python27\lib\site-packages'
编辑1
在上一篇文章中,所有文件(Python 2.7、cx_Oracle包、Oracle Instant client)都用于32位系统。
我为64位系统下载了相同版本的文件,现在远程工作站上一切正常。
编辑2
基本上,我的解决方案是为64位系统而不是32位系统重新安装所有东西(Python、Oracle Instant Client和cx_Oracle)。
总而言之,这是我的问题,也是如何解决的:
1) 我安装了Cx_Oracle(来自32位windows安装包)和Oracle Instant Client(32位),它在我的64位系统上运行良好,32位系统运行python 2.7.5
2) 我在一台虚拟机上做了同样的事情(也运行64位系统),但它不起作用
3) 为了让它在虚拟机上工作,我重新安装了64位系统(python、Instant Client、Cx_Oracle)的所有组件,它终于工作了
另外,请确保下载与您的数据库版本(在我的例子中是11g)相对应的cx_Oracle和Instant client。
希望这有帮助。