我在用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的方法。
pip3 install cx_Oracle
)安装了cx_Oracle,而不是从pypi网站下载了msi。 set ORACLE_BASE=C:\oraclexeset ORACLE_HOME=C:\oraniclexe\app\oracle\product\11.2.0\serverset PATH=C:\oraclexe\instantclient_11_2;%PATH%
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/