Python cx_Oracle-DLL加载失败

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

我在用Python导入cx_Oracle时遇到问题。我知道这里已经讨论了很多有关cx_Oracle的问题,但在阅读了所有相关主题之后,我似乎找不到解决问题的方法

我有两台机器,一台是我的电脑,另一台是远程工作站,配置类似(Windows7,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.
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
导入cx_Oracle
ImportError:DLL加载失败:找不到指定的模块。
我已经仔细检查了我的环境变量,并且我重新安装了cx_Oracle几次,但是我无法让它工作。。。我做了一些关于这个问题的研究,我有点被困在这里,我不明白为什么它在我的计算机上运行良好,但在这个远程工作站上运行不好(唯一的区别是这个远程工作站是一个虚拟机)

有没有人知道会是什么问题

在cx_oracle.pyd上运行Dependency Walker(在运行正常的计算机上和cx_oracle不运行的远程工作站上),唯一的区别是在远程工作站上找不到的dll MSVCR100和MSVCR90

我设置了以下环境变量:

  • C:\Oracle作为Oracle\u基地

  • C:\Oracle\instantclient\u 12\u 1
    as Oracle\u HOME

  • C:\Oracle\instantclient\u 12\u 1
    添加到“Path”变量

这两台机器都是64位的Windows 7

我正在运行Python 2.7.5

我在
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