Python cx_Oracle-DLL加载失败
我在用Python导入cx_Oracle时遇到问题。我知道这里已经讨论了很多有关cx_Oracle的问题,但在阅读了所有相关主题之后,我似乎找不到解决问题的方法 我有两台机器,一台是我的电脑,另一台是远程工作站,配置类似(Windows7,64位)。我需要在远程工作站上安装cx_Oracle,但它不工作,而在我的计算机上工作正常(我可以成功导入模块并连接到数据库)。在远程工作站上,我有以下错误:Python cx_Oracle-DLL加载失败,python,dll,importerror,cx-oracle,Python,Dll,Importerror,Cx Oracle,我在用Python导入cx_Oracle时遇到问题。我知道这里已经讨论了很多有关cx_Oracle的问题,但在阅读了所有相关主题之后,我似乎找不到解决问题的方法 我有两台机器,一台是我的电脑,另一台是远程工作站,配置类似(Windows7,64位)。我需要在远程工作站上安装cx_Oracle,但它不工作,而在我的计算机上工作正常(我可以成功导入模块并连接到数据库)。在远程工作站上,我有以下错误: Traceback (most recent call last): File "<pyshe
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.
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
导入cx_Oracle
ImportError:DLL加载失败:找不到指定的模块。
我已经仔细检查了我的环境变量,并且我重新安装了cx_Oracle几次,但是我无法让它工作。。。我做了一些关于这个问题的研究,我有点被困在这里,我不明白为什么它在我的计算机上运行良好,但在这个远程工作站上运行不好(唯一的区别是这个远程工作站是一个虚拟机)
有没有人知道会是什么问题
在cx_oracle.pyd上运行Dependency Walker(在运行正常的计算机上和cx_oracle不运行的远程工作站上),唯一的区别是在远程工作站上找不到的dll MSVCR100和MSVCR90
我设置了以下环境变量:
C:\Oracle作为Oracle\u基地
as Oracle\u HOMEC:\Oracle\instantclient\u 12\u 1
添加到“Path”变量C:\Oracle\instantclient\u 12\u 1
C:\Oracle\instantclient\u 12\u 1中解压缩了instantclient-basic-nt-12.1.0.1.0
我安装了cx\U 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\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位),它在我运行python 2.7.5的32位系统的64位系统上运行得非常好
2) 我在虚拟机上做了同样的事情(也运行64位系统),但它不工作
3) 为了让它在虚拟机上工作,我重新安装了64位系统的所有东西(python、即时客户端、Cx_Oracle),它终于工作了
另外,请确保下载与您的DB版本(在我的示例中是11g)对应的cx_Oracle和Instant client。
希望这有帮助。我正在Win7和python35(64位)上运行Oracle express
这就是我如何将django-1.9连接到oracle的方法
使用pip安装cx_Oracle(pip3安装cx_Oracle
),而不是从pypi网站下载msi
从()下载Oracle instant client 64位版本并解压缩到c:\oraclexe(只是为了将所有Oracle内容保存在一个位置)
创建以下环境变量:
set ORACLE\u BASE=C:\oraclexe
设置ORACLE\u HOME=C:\oraniclexe\app\ORACLE\product\11.2.0\server
设置路径=C:\oraclexe\instantclient\u 11\u 2;%路径%
更新了my django settings.py
数据库={
“默认值”:{
“引擎”:“django.db.backends.oracle”
'NAME':'XE',
“用户”:“人力资源”,
“密码”:“hr”,
'HOST':'localhost',
“端口”:“1521”,
},
}
就这样。在那之后,我的django迁移工作得很好在我的例子中,我只是在path变量中将ORACLE_移到Python之前,它对我有效。我也有同样的问题。您解决了这个问题吗?请参阅我的编辑编号2。编辑2对我有效:卸载所有python和cx_oracle安装获取64位即时客户端并将目录添加到路径安装64位python和cx_oracle