cx_Oracle 无法识别 Linux 上安装的 Oracle 软件安装位置

2024-04-11

我已经能够在 Windows 8 笔记本电脑上成功安装 cx_Oracle 以与 Python 3.4 一起使用,现在我尝试在 Linux 计算机上进行相同的设置(使用 Python 3.4 的 cx_Oracle)。从 cx_Oracle-5.1.3.tar.gz 运行 setup.py 文件时,我最终遇到以下错误:

    sudo python3 setup.py install
    Traceback (most recent call last):
       File "setup.py", line 135, in <module>
          raise DistutilsSetupError("cannot locate an Oracle software " \
    distutils.errors.DistutilsSetupError: cannot locate an Oracle software installation

根据我查看的其他一些答案(Windows 上的 easy_install cx_Oracle(python 包) https://stackoverflow.com/questions/11245985/easy-install-cx-oracle-python-package-on-windows?lq=1, https://gist.github.com/jarshwah/3863378 https://gist.github.com/jarshwah/3863378)我已经安装了这 3 个即时客户端 rpm:

rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.i386.rpm
rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.i386.rpm
rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.i386.rpm

然后我将 ORACLE_HOME 设置为它们安装到的文件夹,这应该帮助 python 识别 oracle 文件的位置,以便它可以正确地进行安装。

每次尝试运行 setup.py 文件时,我仍然遇到相同的“无法找到 Oracle 软件安装”错误。

知道我需要做什么才能成功安装 cx_oracle 吗?

更新以获取更多信息:

echo $ORACLE_HOME 返回/instantclient_12_1,这是 rpm 文件安装到的位置。

这是我的 /instantclient_12_1 目录的内容:

adrci                  libnnz12.so       libsqlplusic.so  tnsnames.ora
BASIC_README           libocci.so        libsqlplus.so    tnsnames.ora_andy
genezi                 libocci.so.12.1   ojdbc6.jar       uidrvci
glogin.sql             libociei.so       ojdbc7.jar       xstreams.jar
libclntshcore.so.12.1  libocijdbc12.so   sdk
libclntsh.so           libons.so         sqlplus
libclntsh.so.12.1      liboramysql12.so  SQLPLUS_README

这与我的 Windows 8 安装目录有点不同 - 那个目录有.dll and .sym文件,例如orasql12.dll。 Linux 版本的即时客户端安装是否应该有不同的文件?

更新部分解决方案:

我找到了一个正确安装 cx_Oracle 的解决方案,但仅在该 shell 实例期间:

我设置了这两个环境变量:

export ORACLE_HOME=/instantclient_12_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME

然后我创建了一个符号链接:

ln -s libclntsh.so.12.1 libclntsh.so

之后,前往cx_oracle文件夹并执行此操作有效:

python3 setup.py build
python3 setup.py install

因为某些原因,sudo python3 setup.py install没有为此工作。

更新相关问题的链接:

我的下一个问题是让环境变量保留在 shell 实例之外,这样我就不必每次都定义环境变量。当我回显它们时,我放入 profile.d 的环境变量会显示出来,但是 python 无法正确导入 cx_oracle,并且出于某种原因我必须再次导出环境变量。我不知道发布与此相关的不同问题的正确程序,所以我在这里提出了一个新问题:

Linux profile.d 环境变量不适用于 Python 中的 cx_oracle https://stackoverflow.com/questions/31009151/linux-profile-d-environment-variables-dont-work-with-cx-oracle-in-python

请帮助我解决这个问题,我感觉完全陷入了如何使其发挥作用的困境中。当我回显环境变量时,它们就会显示出来,但只有在运行 python 代码之前再次导出它们时,它们似乎才起作用。


Updated

As 彼得里堡建议 https://stackoverflow.com/questions/30928203/cx-oracle-does-not-recognize-location-of-oracle-software-installation-for-instal/30949105?noredirect=1#comment49932383_30949105, 环境LD_RUN_PATH在构建时将包含 Oracle 共享库文件的路径cx_Oracle在安装过程中构建的共享库。这消除了需要LD_LIBRARY_PATH正如我在第一个答案中所建议的那样。


对于您正在使用的 RPM,ORACLE_HOME应设置为/usr/lib/oracle/12.1/client。如果您正在使用pip:

$ export ORACLE_HOME=/usr/lib/oracle/12.1/client
$ export LD_RUN_PATH=/usr/lib/oracle/12.1/client/lib:$LD_RUN_PATH
$ pip install cx_Oracle
$ python -c 'import cx_Oracle; print(cx_Oracle.version)'
5.1.3

读这个文档 http://www.oracle.com/technetwork/topics/linuxsoft-082809.html#ic_x86_inst有关安装和执行使用客户端库的应用程序的一些信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cx_Oracle 无法识别 Linux 上安装的 Oracle 软件安装位置 的相关文章

  • 如何在 for 循环中跳过一些迭代

    在 python 中 我通常简单地循环遍历范围 for i in range 100 do something 但现在我想跳过循环中的几个步骤 更具体地说 我想要类似的东西continue 10 这样它就会跳过整个循环并将计数器增加 10
  • Bash:更新文件中的变量

    我知道这是一个简单的答案 在找到答案之前我可能可以继续在谷歌上进行挖掘 但我的日程很紧 我希望能得到一个轻松的答复 我需要在安装时更新 ifcfg eth0 中的变量 换句话说 这就是需要发生的事情 以下变量需要更改 ONBOOT no B
  • 将 KB/MB/GB 等字符串解析为数值

    为了不发明自行车 我想知道是否有任何库能够将大小字符串 MB KB TB MiB KiB 等 的各种表示形式解析为基于数字字节的值 ActiveState Receipes 有一个示例here http code activestate c
  • Python 3:如何更改GDAL中的图像数据?

    我有一个 GeoTIFF 图像 其中包含颜色表和带有 8 位表键的单个栅格带 并且使用 LZW 压缩 我加载该图像gdal Open https gdal org python osgeo gdal module html 我还有一个包含
  • PyKCS11 不可哈希列表

    我的 python 脚本旨在获取特定 so 库中插槽 令牌的详细信息 输出如下所示 Library manufacturerID Safenet Inc Available Slots 4 Slot no 0 slotDescription
  • 为什么通过selenium切换到alert不稳定?

    为什么通过selenium切换到alert不稳定 例如 1 运行代码 一切顺利 一切都很顺利 但如果这段代码在几分钟内运行 那么可能会出现错误 例如 没有可以单击的元素 等等 2 在一个站点上有一个警报窗口 alert driver swi
  • 使用Python mysql.connector远程连接MySQL

    以下代码 在同一 LAN 内与 mysql 服务器不同的机器上运行 使用 Python3 和 mysql connector 本地连接到 MySQL 数据库 import mysql connector cnx mysql connecto
  • Matplotlib 动画未显示

    当我在家里的电脑上尝试这个时 它可以工作 但在工作的电脑上却不行 这是代码 import numpy as np import matplotlib pyplot as plt import matplotlib animation as
  • 如何在 PyCharm 中启用 flake8 的自动代码格式化

    我使用 Tox 运行单元测试 并使用 flake8 命令检查代码格式错误 每次我在 PyCharm 中编码时 我都会运行 tox 然后意识到我有一堆烦人的格式错误 我必须返回并手动修复 我希望 PyCharm 自动格式化代码 根据 flak
  • SQLPLUS 保存到文件

    我必须为我的数据库类使用 SQLPLUS 我们的第一个作业是简单的保存 我按照说明进行操作 我正在使用 PuTTY 访问 sqlplus 在本练习中使用以下 SQL 命令 并尝试使用 SAVE 和 SPOOL 命令将 SQL 命令和输出保存
  • 将 pandas DataFrame 与 Series 进行比较

    我看过this https stackoverflow com questions 26285661 working with comparing dataframes and series and generating new dataf
  • 如何在 Python 中重命名文件并保留创建日期

    我知道创建日期不存储在文件系统本身中 但是当我使用时我遇到了问题os rename 它正在更新我正在使用的文件的创建日期 是否可以重命名文件而不更改其原始创建日期 正如都铎所说 你可以使用os stat http docs python o
  • 没有名为 objc 的模块

    我正在尝试将 cocoa python 与 Xcode 一起使用 但它总是会出现错误 Traceback most recent call last File main py line 10 in
  • 有没有更快的方法将数字转换为名称?

    以下代码定义了映射到数字的名称序列 它的设计目的是获取一个号码并检索一个特定的名称 该类通过确保名称存在于其缓存中来进行操作 然后通过索引到其缓存中来返回名称 问题在这 如何在不存储缓存的情况下根据数字计算出名称 该名称可以被认为是一个以
  • SyntaxError:多个异常类型必须用括号括起来

    我是初学者 在使用 python 安装 pycaw 进行音频控制后遇到问题 在放置 pycaw 的基本初始化代码时 出现以下错误 Traceback most recent call last File c Users volumeCont
  • 结束一天(日期时间)的最优雅的方式是什么?

    我目前正在编写一些报告代码 允许用户选择指定日期范围 它的工作方式 简化 是 用户 可选 指定年份 用户 可选 指定月份 用户 可选 指定一天 这是一个代码片段 以及描述我想要的内容的注释like to do from datetime i
  • 了解 Tensorflow 中的 while 循环

    我正在使用用于 Tensorflow 的 Python API https www tensorflow org api docs python 我正在努力实施罗森布罗克函数 https www sfu ca ssurjano rosen
  • Oracle BLOB 与 VARCHAR

    我需要在表的一列中存储一个 大 SQL 查询 我想使用BLOB场地 需要明确的是 我想存储查询 而不是其结果 最好使用什么 BLOB or a VARCHAR 或者也许还有别的什么 另一种选择是 CLOB 对于文本数据 使用 CLOB 比使
  • 分别计算男女宿舍

    我想要的结果是这样的 males 1990 Q1 value Q2 value Q3 Value Q4 Value females Q1 value Q2 value Q3 Value Q4 value 如果任何值不存在则默认值 0 imp
  • 尝试输入字符串时出现名称错误[重复]

    这个问题在这里已经有答案了 import pickle import os import time class Person def init self number address self number number self addr

随机推荐

  • 在django模板中按索引访问列表

    我正在尝试动态访问列表中的索引位置 allAppsList app id link 它不起作用 allAppsList 0 link worked 应该是语法问题 我在网上谷歌 但没有找到任何有用的东西 顺便提一句 如果在 Java 中使用
  • 如何获取子Widget的大小

    我有一个特殊的要求 允许标题小部件 通常包含静态内容出现在滚动视图的顶部 滚动视图应与标题小部件重叠 以便可以使用剪辑形状来产生效果 我通过使用堆栈视图来实现此效果 其中标题小部件作为堆栈中的第一项 滚动视图作为顶部元素 滚动视图包含一列
  • 如何扩展 Yii 框架类以及放置文件的位置

    我想扩展一些内置的框架类 但我有一些不清楚的地方 我认为我应该将我的类放在我的组件文件夹下 这是正确的位置吗 我应该将课程命名为Subfolder ClassName和像这样的文件ClassName php 我如何继承 默认包含路径不包含框
  • 无法通过 KAFKA api 连接到 EventHub

    通过 kafka 库连接事件中心时遇到异常 Caused by org apache kafka common protocol types SchemaException Error reading field sasl auth byt
  • 如何使用 JavaScript 获取缩放后的 SVG 元素的宽度?

    如果我有内联 SVG 包括已缩放的元素
  • 多个队列在一个通道中消耗

    我使用rabbitMq 来管理和使用队列 我有多个队列 它们的数量并不具体 我使用直接交换来发布消息 我怎样才能仅使用一个队列来消费每个队列的所有消息 基于routing key 渠道 此时我假设我有 5 个队列 我使用了 for 循环并为
  • vuejs如何上传图片?

    请 下面是我的 vue 组件脚本部分中的代码 我的所有输入字段均正确 但图像和视频上传显示空值 我试图解决这个问题但没有成功 playVideo url let video video preview get 0 video preload
  • GCM 和 Google Analytics 使用不同的 google 帐户在 google-services.json 文件中集成在一起?

    我必须将 GCM 和 Google Analytics 集成到同一个应用程序中 所以首先我们需要获取google services json配置文件 好吧 假设我有两个谷歌空调 把它想象成 电子邮件受保护 cdn cgi l email p
  • OpenGL 与 Cocos2d:该选择什么?

    我知道 cocos2d 它是非常简单的 API 我可以用它来做简单而巨大的 2D 甚至有时 3D 游戏 应用程序 我也知道 OpenGL 它更复杂 它的 API 级别较低等 问题 实现 2D 3D 游戏用什么更好 如果我们有cocos2d这
  • 尝试检索经过身份验证的 Google+ 用户的电子邮件地址时收到“gapi.client is undefined”

    我正在尝试从使用 google 登录按钮登录我的网站的访问者那里检索用户数据 但我最终在 javascript 控制台中收到消息 TypeError gapi client 未定义 由于我无法识别错误 我最终从 Google 复制 粘贴了示
  • 在 Linux 的 gdb 中启用 memleak 选项

    我试图查看哪个进程导致内存泄漏 并转储导致它的堆以查看问题所在 我应该在 gdb 中使用哪个命令来设置内存泄漏并检查堆 I tried gdb check leaks checkpoint can t find fork function
  • 如何将 Composer 包包含到纯 php 中?

    下午好 首先我要说的是 我从未在我的项目中包含过 Composer 项目 除非它是 Laravel 框架的 Composer 包 如果需要 您 需要 它并将其添加到提供者数组和别名中 现在 问题来了 我有一个作曲家包我正在尝试使用https
  • 为什么使用 Remix 的 Indie 堆栈初始化的项目在 Devtools 中出现 Hydration failed 错误?

    当我学习Remix时 我按照教程初始化了一个项目 但是当我打开Devtools时 我看到控制台上报告了几个错误 Warning Did not expect server HTML to contain a div in Error Hyd
  • 分解精灵图像的简单工具? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有很多包含数十个图标的精灵图像 有没有一种简单的方法可以自动将精灵分解成单独的图像文件或为其提供坐标
  • 如何在最新的 Chart JS 版本(3.3.2)中创建渐变填充折线图?

    I am wondering how to create a gradient line chart fill in Chart JS version 3 3 2 like this This StackOverflow问题 https s
  • 在WPF中有效地在图像上显示文本?

    如何在图像上显示文本 使其始终可见 因为图像颜色是混合的且不可预测 我考虑了两个选择 使文本边框为白色 而文本本身为黑色 使文字与图片相反地显示 第一个选项是首选 因为它看起来更坚固 嵌入文本很简单
  • Android WebView 中 pageDown(true) 总是返回 false

    我在 Android 中有一个 WebView 它存储我的应用程序的对话流 该应用程序每 20 秒轮询一次服务器以查找任何消息并更新 WebView 每次 WebView 更新时 它都会滚动回视图顶部 我想阻止这种情况发生 所以我尝试使用
  • Tensorflow - 断言失败:[预测必须在 [0, 1] 中]

    我正在使用EstimatorTensorflow的API和我遇到了以下问题 我想检查 f1 分数而不是准确性 当我在训练后评估时 根本没有问题 当我测试时 它要求标准化值 我已经标准化了 这是我的网络模型 第一部分省略 architectu
  • 获取远程服务器的准确时间

    在 C 中 如何查询远程服务器的当前时间 类似的功能 net time servername 但返回包含秒的日期戳 Thanks 您可以使用网络远程TOD http msdn microsoft com en us library aa37
  • cx_Oracle 无法识别 Linux 上安装的 Oracle 软件安装位置

    我已经能够在 Windows 8 笔记本电脑上成功安装 cx Oracle 以与 Python 3 4 一起使用 现在我尝试在 Linux 计算机上进行相同的设置 使用 Python 3 4 的 cx Oracle 从 cx Oracle