我有一些使用cx_Oracle连接到Oracle数据库的小型python应用程序.我通过使用py2exe编译它们来部署这些应用程序,这在许多情况下都可以正常工作.

问题是,在许多需要安装它的人中没有标准的Oracle客户端版本(例如9i和10g),尝试让每个人都在单个Oracle客户端版本上进行标准化会非常令人沮丧.我目前正在使用带有cx_Oracle 4.4.1 for 9.2i的9.2客户端,所以当我py2exe时,生成的exe包含cx_Oracle 4.4.1库,不适用于10g客户端.

我没有使用任何Oracle版本的任何特定功能,因此除了cx_Oracle兼容性问题之外,我没有理由关心正在使用的客户端版本.

理想的解决方案是以某种方式编译一个完全独立于机器上安装的Oracle客户端的版本.

如果那是不可能的,我愿意为每个主要的Oracle版本(my_app_9i.exe,my_app_10g.exe等)编译单独的exes,但是我无法想出一个简单的方法甚至这样做,因为安装新的cx_Oracle会覆盖我的旧版本,每当我做出改变时,我都要不断地来回交换库来编译其他版本.

欢迎任何建议或其他选择.

解决方法:

如果你想构建多个cx_Oracle版本(例如:cx_Oracle10g,cx_Oracle11g等),那么你需要修改cx_Oracle setup.py脚本.脚本的最后一步是调用setup();第一个参数是要构建的模块的名称.您需要做的就是将“cx_Oracle”更改为“cx_Oracle”ver,其中ver为10g,11g等.创建多个脚本并对其进行硬编码,或者向setup.py添加另一个参数以动态选择它.

当然,一旦你有了这个,你需要一种机制来在运行时加载正确的模块.为此,您需要创建自己的cx_Oracle模块,其中包含__init__.py文件,如下所示:

try:

from cx_Oracle9g import *

except ImportError:

try:

from cx_Oracle10g import *

except ImportError:

try:

from cx_Oracle11g import *

您需要做的就是将您的自定义cx_Oracle模块以及正确的cx_OracleXg模块与您的应用程序一起发送.

或者,您可以让自定义cx_Oracle模块动态检查每个可用的Oracle客户端库(9g,10g,11g等),然后只导入正确匹配的cx_OracleXg模块.在这种情况下,您只需要发送一个二进制文件,其中包含您的自定义cx_Oracle模块以及所有cx_OracleXg模块.

标签:py2exe,python,oracle,cx-oracle,instantclient

来源: https://codeday.me/bug/20191009/1876012.html

cx_oracle版本,python – 将cx_Oracle部署到各种版本的Oracle Client上相关推荐

  1. 多版本Python共存时pip给指定版本的python安装package的方法

    在Linux安装了多版本Python时(例如python2.7和3.6),pip安装的包不一定是用户想要的位置,此时可以用 -t 选项来指定位置. 例如目标位置是/usr/local/lib/pyth ...

  2. 适合python开发的linux版本,Python Linux下安装多个版本

    Linux Ubuntu 12.04自带了 Python2.7.3版本,如果需要安装其他版本一般操作是: 最好先进行依赖检查sudo apt-get build-dep python (如果随后还要安 ...

  3. python学哪个版本-Python学习,要选哪个版本?

    纵观各大编程语言在 2017 年的发展情况,我们会发现涌现出诸如 Go.Swift 这类后起之秀,而其中最为耀眼的当属 Python.之所以 Python 如此受捧,不仅仅是人工智能.数字科学领域的兴 ...

  4. macos下 python安装cx_oracle

    2019独角兽企业重金招聘Python工程师标准>>> 1) 首先通过命令安装cx_Oracle pip install cx_Oracle 也可在pycharm里面安装,File- ...

  5. cx oracle6 oracle10,python安装cx_Oracle

    首先安装配置时,必须把握一个点,就是版本一致!包括:系统版本,python版本,oracle客户端的版本,cx_Oracle的版本,然后安装配置就容易了! 如果已经安装Python,查看你安装的Pyt ...

  6. 【转】python 和 cx_Oracle 的使用

    下载地址: http://sourceforge.net/projects/cx-oracle/?source=directory(失效的话请自己百度)下载的时候注意数据库版本和操作系统环境. 技术手 ...

  7. cx_oracle安装教程,Python 安装 cx_Oracle

    说明: 本文档内容基于Python 2.7.8版本进行操作. 一.下载cx_Oracle 二.下载Oracle客户端驱动(Oracle Instant Client Basic) 三.Windows下 ...

  8. python cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library

    问题: python 使用包cx_Oracle连接Oracle数据,出现错误cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Orac ...

  9. cx oracle 提示32位,Python安装cx_Oracle模块遇到的问题(32bit),pythoncx_oracle,环境:win7 32...

    Python安装cx_Oracle模块遇到的问题(32bit),pythoncx_oracle,环境:win7 32 环境: win7 32位系统 Python3.6 (32bit) 安装模块: cx ...

  10. linux上 python使用cx_Oracle 连接 oracle 9i

    上次用python写过一段代码, 需要读取数据库,然后数据库是很久之前的,还是9i的版本,所以连接的时候就报错. 因为写这篇文章离我写这段代码已经过去了一段时间,而且当时操作的linux也不在旁边.所 ...

最新文章

  1. 基于OpenCV的位姿估计
  2. (笔试题)删除K位数字
  3. C#之while与do……while语句
  4. python 倒叙 数组_Python函数合集:68个内置函数请收好!
  5. android闹钟详细设计,基于LabVIEW的闹钟设计 详细文档+程序
  6. java实现磁盘分配显示_Java实现窗体动态加载磁盘文件
  7. Qt工作笔记-绘制静态折线图
  8. 松哥整理了 15 道 Spring Boot 高频面试题,看完当面霸
  9. LeetCode-1423:可获得的最大点数
  10. OpenCV之图像的遮挡与切分、合并(笔记06)
  11. Windows核心编程调用打印机
  12. ADT(Android) — Eclipse开发连接夜神模拟器方法(亲测有效!)
  13. sqlmap安装与使用
  14. matlab 获取axes图片,matlabaxes显示图片
  15. 23种设计模式设计原则
  16. Springboot+netty实现Web聊天室
  17. 共享单车信号服务器,共享单车的物联网核心——智能锁
  18. python制作的简单程序_Python如何制作简易收银小程序
  19. 照片识别年龄 php,用OpenCV和深度学习进行年龄识别
  20. amd处理器更新zen4服务器芯片,AMD Zen4接口AM5曝光:改用LGA触点式、告别脆弱的针脚...

热门文章

  1. maven setting文件配置
  2. 我如何把薪水从 50人民币/天 提升到 100美元/小时的
  3. 2020大风口!什么是图神经网络?有什么用?终于有人讲明白了
  4. 比宝塔WDCP更好的linux面板来了
  5. 透过《眼睛的故事》:需求为何成为纪录片的“价值锚点”?
  6. 六一快乐,盘点童年那些经典的小玩意
  7. 微信小程序服务器冗余,微信小程序:如何防止数据重复插入?
  8. 以太网口差分电平_以太网通讯异常的分析与处理方案及问题定位时的注意事项...
  9. Oracle连接远程数据库的四种方法
  10. 系统解剖学 | 心血管 | 动脉