我在使用 Python 导入 cx_Oracle 时遇到问题。我知道这里已经讨论了 cx_Oracle 的很多问题,但在阅读所有相关主题后,我似乎找不到解决我的问题的方法。
我有两台机器,一台是我的计算机,另一台是远程工作站,它们具有相似的配置(Windows 7,64 位)。我需要在远程工作站上安装 cx_Oracle,但它不起作用,而它在我的计算机上运行良好(我可以成功导入模块并连接到我的数据库)。在远程工作站上,我遇到以下错误:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import cx_Oracle
ImportError: DLL load failed: The specified module could not be found.
我仔细检查了我的环境变量,并且重新安装了 cx_Oracle 几次,但我无法让它工作...我对这个问题做了一些研究,我有点卡在这里,我不明白为什么会这样在我的计算机上工作正常,但在该远程工作站上则不然(唯一的区别是该远程工作站是虚拟机)。
有人知道可能是什么问题吗?
在 cx_oracle.pyd 上运行 Dependency Walker(在我的计算机上工作正常,在远程工作站上 cx_oracle 不起作用),唯一的区别是 dll MSVCR100 amd MSVCR90 在我的远程工作站上找不到。
我有以下环境变量设置:
两台机器都是64位,Windows 7
我正在运行Python 2.7.5
我将 instantclient-basic-nt-12.1.0.1.0 解压到C:\Oracle\instantclient_12_1
我安装了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'
EDIT 1
在上一篇文章中,所有文件(Python 2.7、cx_Oracle 包、Oracle Instant 客户端)均适用于 32 位系统。
我为 64 位系统下载了这些文件的相同版本,现在我的远程工作站上一切正常。
EDIT 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),它终于工作了
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
http://sourceforge.net/projects/cx-oracle/files/5.1.2/ http://sourceforge.net/projects/cx-oracle/files/5.1.2/
另外,请确保下载与您的数据库版本相对应的 cx_Oracle 和 Instant 客户端(在我的例子中为 11g)。
希望这可以帮助。