我在用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几次,但是我无法使其正常工作。我对此问题进行了一些研究,但有点卡在这里,我不明白为什么会这样在我的计算机上可以正常工作,但在此远程工作站上却不能正常工作(唯一的区别是此远程工作站是VM)。

有谁知道可能是什么问题?

在cx_oracle.pyd(在我的计算机可以正常工作的地方以及在cx_oracle无法工作的远程工作站上)上都运行Dependency Walker,唯一的区别是在我的远程工作站上找不到dll MSVCR100和MSVCR90。

我有以下环境变量设置:
  • C:\Oracle as ORACLE_BASE
  • C:\Oracle\instantclient_12_1作为ORACLE_HOME
  • C:\Oracle\instantclient_12_1已添加到“路径”变量


  • 两台机器都是64位Windows 7

    我正在运行Python 2.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给我:



    编辑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位),并且在运行32位系统python 2.7.5的64位系统上可以正常工作
    2)我在虚拟机上也做了同样的事情(也正在运行64位系统),但没有工作
    3)为了使其在VM上正常工作,我重新安装了64位系统(python,Instant Client,Cx_Oracle)中的所有程序,终于可以正常工作了

    http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
    http://sourceforge.net/projects/cx-oracle/files/5.1.2/

    另外,请确保下载与您的数据库版本(在我的情况下为11g)相对应的cx_Oracle和Instant Client。
    希望这可以帮助。

    最佳答案

    我在win 7和python35(64 bit)上运行Oracle Express。

    这就是我设法使django-1.9连接到oracle的方法。

  • 使用pip(pip3 install cx_Oracle)安装了cx_Oracle,而不是从pypi网站下载了msi。
  • 从(http://www.oracle.com/technetwork/topics/winx64soft-089540.html)下载了Oracle Instant Client 64位版本,并解压缩到c:\oraclexe(只是将所有oracle内容保存在一个地方)
  • 在以下环境变量中创建:
    set ORACLE_BASE=C:\oraclexeset ORACLE_HOME=C:\oraniclexe\app\oracle\product\11.2.0\serverset PATH=C:\oraclexe\instantclient_11_2;%PATH%
  • 更新了我的Django设置。py
  • DATABASES = { 'default':{ 'ENGINE':'django.db.backends.oracle' 'NAME':'XE', 'USER':'hr', 'PASSWORD':'hr', 'HOST':'localhost', 'PORT':'1521', },}就是这样。之后,我的django迁移工作正常

    关于python - cx_Oracle-DLL加载失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24124110/

    10-15 17:37