转自http://rookiefly.cn/detail/69

作死小能手这两天闲着没事,把自己电脑重装了,然而重装过后配置开发环境踩了一些坑,这里把安装cx_oracle遇到的坑记录下来,方便以后查看。

使用pip安装出现的问题

命令:

pip install cx_oracle

错误:

Unable to find vcvarsall.bat

我用了最简单粗暴的方法:由于我的操作系统是win10 64位,所以我安装了vs2015,很遗憾报的错误更多了!由于以前我没用pip安装都可以成功安装,所以我舍弃了这种安装方式


到官网下载相应版本的驱动进行安装

我的操作系统为64位,Python版本为3.5.2,所以我到https://pypi.python.org/pypi/cx_Oracle/5.2.1 下载了对应的版本:cx_Oracle-5.2.1-12c.win-amd64-py3.5

1.安装过程中的错误:

Python version 3.5 required, which was not found in the registry

解决方法: 网上看了很多种解决方法,很多是说的修改注册表,这种方式我试了,但是没成功,最后找到这个方法,成功了。运行下面这个脚本,不管是Python3.x还是2.x都可以加入注册表中:


# 解决windows平台下找不到python的注册信息问题 (安装oracle驱动会用)
from winreg import *
import sys
# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix
regpath = "SOFTWARE\Python\Pythoncore\{0}\".format(version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "{0};{1}\Lib\;{2}\DLLs\".format(installpath, installpath, installpath)
def RegisterPy():try:reg = OpenKey(HKEY_CURRENT_USER, regpath)except EnvironmentError as e:try:reg = CreateKey(HKEY_CURRENT_USER, regpath)SetValue(reg, installkey, REG_SZ, installpath)SetValue(reg, pythonkey, REG_SZ, pythonpath)CloseKey(reg)except:print(" Unable to register!")returnprint("--- Python", version, "is now registered!")returnif (QueryValue(reg, installkey) == installpath andQueryValue(reg, pythonkey) == pythonpath):CloseKey(reg)print("=== Python", version, "is already registered!")returnCloseKey(reg)print(" Unable to register!")print("*** You probably have another Python installation!")
if name == "main":RegisterPy()

为了防止直接从网页复制运行失败的情况,我把它放到了github上,可以直接下载运行:register.py

2.命令行中运行提示找不到指定的模块

import cx_Oracle

ImportError: DLL load failed: 找不到指定的模块。

这个问题的解决方法网上也说了很多,就是下载instantclient,然后解压将其中的oci.dll拷贝到$Python_Home 或者 $Python_Home\Lib\site-packages 目录下。运气好了,就成功了,运气不好的话可能还会出现找不到指定的模块这个问题,原因是instantclient的版本和cx_Oracle的版本不一致,拿我安装的来举例,我先下载了instantclient11,而我的 cx_Oracle安装的是cx_Oracle-5.2.1-12c.win-amd64-py3.5,一个是11,一个是12c,这样还是出现了这个找不到指定的模块这个问题。正确做法是下载instantclient12和cx_Oracle-5.2.1-12c.win-amd64-py3.5。注意一点是cx_oracle和instantclient的版本不必和Oracle数据库版本一致,只需要cx_Oracle和instantclient版本一致即可。这样这个问题解决了,但是还有坑等着你!

3.命令行中运行提示不是有效的win32模块

import cx_Oracle

DLL load failed: %1 不是有效的 Win32 应用程序

解决方法:上一步我们讨论了版本问题,这一步该说说操作系统位数的问题了,出现这个问题的原因是操作系统、cx_Oracle和instantclient的位数不同,比如我先就是用的win10 64、cx_Oracle-5.2.1-12c.win-amd64-py3.5和instantclient12c(32位),就报了这个错误。正确做法是三者都用64或者三者都用32位系统,将instantclient的oci.dll文件放到$Python_Home\Lib\site-packages 目录下即可。

到此,应该可以解决cx_oracle安装过程的所有问题了,祝大家好运!

补充:虽然这样是可以使用cx_Oracle了,但是实际操作数据库的时候可能会出现unable to acquire oracle environment handle这个错误,解决方法是拷贝oci.dll, oraociei12.dll, oraocci12.dll到site-package中。另外一种方法是为instantclient12c设置环境变量,这样就不用拷贝dll文件了

windows安装cx_oracle的坑相关推荐

  1. windows安装paddlepaddle踩坑教程

    问题:在windows的anaconda环境中安装paddlepaddle时,创建新的conda环境错误. 环境:Windows10+anaconda3.6.5+cuda10.1 解决方法:不要按照官 ...

  2. windows 安装scoop踩坑之旅

    scoop就不介绍了 类似centos的yum,nodejs的npm 就是windows的包管理工具. 网上查了下安装方法PowerShell上执行 iex (New-Object System.Ne ...

  3. windows安装ROS

    windows安装ROS的坑 先不要着急恢复出厂设置 先不要着急恢复出厂设置 auto-starting new master process[master]: started with pid [1 ...

  4. 服务器系统2022安装wsl2,手把手教你踩坑:老白的Docker for Windows安装初探WSL 2 backend...

    手把手教你踩坑:老白的Docker for Windows安装初探WSL 2 backend 2020-06-16 13:29:47 15点赞 63收藏 4评论 创作立场声明:老白的踩坑记录 嗨,大家 ...

  5. windows下pycocotools的安装及避坑

    windows下pycocotools的安装及避坑 本文原地址: https://aistudio.baidu.com/aistudio/projectdetail/980509 (保持更新) 1. ...

  6. windows 安装 spark 及 pycharm 调试 TopN 实例

    2019独角兽企业重金招聘Python工程师标准>>> 首先声明本文搭建的环境为:windows8.1 + spark1.6.0 + python2.7 + jdk8,spark o ...

  7. Nginx1.6.2版本安装遇到的坑以及配置反向代理

    Nginx1.6.2版本安装遇到的坑以及配置反向代理 本文基于https://www.runoob.com/linux/nginx-install-setup.html教程进行安装,安装过程中和使用中 ...

  8. 深度学习部署:Windows安装pycocotools报错解决方法

    深度学习部署:Windows安装pycocotools报错解决方法 1.pycocotools库的简介 2.pycocotools安装的坑 3.解决办法 更多Ai资讯:公主号AiCharm 本系列是作 ...

  9. linux环境下安装python3以及安装cx_Oracle模块需要注意的事项

    linux环境下安装python3以及安装cx_Oracle模块需要注意的事项 python3的安装 1. 首先安装python3之前首先要安装python所依赖的环境 yum install gcc ...

最新文章

  1. C语言 volatile的作用与使用场景
  2. ML之NB:利用朴素贝叶斯NB算法(CountVectorizer+不去除停用词)对fetch_20newsgroups数据集(20类新闻文本)进行分类预测、评估
  3. java中 快捷键输入System.out.println();
  4. nginx 高并发配置参数(转载)
  5. zk中的Datebox中得到Timestamp
  6. 注册表文件(*.reg)的编写及应用
  7. OpenCV示例学习(七):离散傅里变换(DFT)算子:getOptimalDFTSize(),copyMakeBorder(),magnitude(),log(),normalize()
  8. python爬虫 被重定向_爬虫篇 | 认识Python最最最常用语重要的库Requests
  9. 接口测试之post常见数据提交方式
  10. 3张经典人事管理模板,HR都直呼很好用
  11. python制作gif动图_Python几行代码制作Gif动图
  12. python 拼音输入法_ubuntu上安装 ibus Google拼音输入法(修改一点错误)
  13. 11月全国程序员平均工资出炉,网友:我丢了同行的脸
  14. 利用requests库和BeautifulSoup库爬取链家二手房的基本数据
  15. android 裁剪屏幕中特定区域内的内容
  16. 全闪存存储的VDI场景应用
  17. EF 配置Oracle数据库 EF ORA-01918: 用户 'dbo' 不存在
  18. <update></update>
  19. 数量金融学(7):连续复利
  20. 妖精的尾巴手游快速升级辅助 爱蜂窝自动新手挂机升级

热门文章

  1. [开发工具] STM32算法的翅膀之MATLAB
  2. RN导入高德地图定位的用法实例
  3. 怕麻烦的人,过不了好生活,好真实
  4. MySQL高性能索引设计
  5. 决策力--用别人预测自己(3)
  6. Asp.net Ajax框架教程[教程下载]
  7. 泰克MSO2014B|MSO2024B|MSO2022B混合信号示波器使用教程
  8. super this
  9. 电脑如何备份文件,怎么同步?
  10. Flutter升级空安全版本注意事项