【问题标题】:install cx_oracle for python为 python 安装 cx_oracle
【发布时间】:2011-05-17 11:42:31
【问题描述】:

在 Debian 5 上,我一直在尝试为 python 安装 cx_oracle 模块,但没有成功。首先,我安装了 oracle-xe-client 及其依赖项(遵循以下链接中的教程here)。

然后,我使用 /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin 中的脚本来填充环境变量,例如 PATH、ORACLE_HOME 和 NLS_LANG .

一旦完成,我尝试运行:

sudo easy_install cx_oracle

但我不断收到以下错误:

Searching for cx-oracle
Reading http://pypi.python.org/simple/cx_oracle/
Reading http://cx-oracle.sourceforge.net
Reading http://starship.python.net/crew/atuining
Best match: cx-Oracle 5.0.4
Downloading http://prdownloads.sourceforge.net/cx-oracle/cx_Oracle-5.0.4.tar.gz?download
Processing cx_Oracle-5.0.4.tar.gz
Running cx_Oracle-5.0.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-xsylvG/cx_Oracle-5.0.4/egg-dist-tmp-8KoqIx
error: cannot locate an Oracle software installation

知道我在这里错过了什么吗?

【问题讨论】:

  • echo $ORACLE_HOME 输出什么?
  • $ORACLE_HOME 设置为 /usr/lib/oracle/xe/app/oracle/product/10.2.0/client
  • 如有疑问,请阅读官方cx_Oracle Installation instructions,其中包含的信息比本文中的许多答案都更新。

标签: python oracle


【解决方案1】:

另一种方式,不需要 RPM。你需要是root

  1. 依赖关系

    安装以下软件包:

    apt-get install python-dev build-essential libaio1
    
  2. 下载 Linux x86-64 的即时客户端

    从 Oracle 的download site 下载以下文件:

  3. 解压 zip 文件

    将下载的zip文件解压到某个目录,我正在使用:

    /opt/ora/
    
  4. 添加环境变量

    /etc/profile.d/oracle.sh 中创建一个包含

    export ORACLE_HOME=/opt/ora/instantclient_11_2
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
    

    /etc/ld.so.conf.d/oracle.conf 中创建一个包含

    /opt/ora/instantclient_11_2
    

    执行以下命令

    sudo ldconfig
    

    注意:您可能需要重新启动才能应用设置

  5. 创建符号链接

    cd $ORACLE_HOME 
    ln -s libclntsh.so.11.1 libclntsh.so
    
  6. 安装cx_Oraclepython包

    • 您可以使用pip 进行安装

      pip install cx_Oracle
      
    • 或者手动安装

      下载与您的 Python 和 Oracle 版本对应的cx_Oracle source zip。然后展开存档,并从解压缩的目录运行:

      python setup.py build 
      python setup.py install
      

【讨论】:

  • 这可能是题外话,因为我正在 Mac OS X 10.9.2 上构建它并最终让它工作。除了 Burhan 在 1-7 中为构建路径和符号链接设置环境变量的提示之外,Oracle 的 dylib 文件似乎具有 硬编码 链接路径!!!所以这篇文章有点帮助:caseymorford.com/2014/04/17/installing-oci8-with-mamp-pro 对于 TL;DR,您需要创建另外两个符号链接来解决 dlopen() 错误。否则我们很好!
  • 我在 Ubuntu 16.2 (Docker) 上执行了步骤 1-5,一切正常!!!谢谢!节省了很多时间...
  • 不要使用 Instant Client 设置 ORACLE_HOME - 这可能会导致在运行时读取错误的配置文件。在编译时,旧的 cx_Oracle 安装在 build 时需要它,但现在不再如此。此外,新的即时客户端会自动创建符号链接,因此可以省略该步骤。总之,只需关注cx_Oracle installation instructions
【解决方案2】:

我建议您获取 rpm 文件并使用外星人安装它们。这样,您以后可以运行apt-get purge no-longer-needed

In my case,我需要的唯一环境变量是LD_LIBRARY_PATH,所以我这样做了:

echo export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib >> ~/.bashrc
source ~/.bashrc

我想在你的情况下路径变量将是/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib

【讨论】:

  • Instant Client 19 RPM 将配置和运行 ldconfig,因此您无需设置 LD_LIBRARY_PATH。
【解决方案3】:

以下内容对我有用,无论是在 Mac 还是 Linux 上。这个命令应该下载需要的附加文件,不需要设置环境变量。

python -m pip install cx_Oracle --pre

注意,--pre 选项用于开发和预发布 Oracle 驱动程序。截至发帖时,它正在抓取cx_Oracle-6.0rc1.tar.gz,这是必需的。 (我使用的是 python 3.6)

【讨论】:

    【解决方案4】:

    Thx Burhan Khalid,我忽略了你的“你需要成为 root”的引用,但是当你不是 root here 时找到了方法。

    在第 7 点你需要使用:

    sudo env ORACLE_HOME=$ORACLE_HOME python setup.py install 
    

    或者

    sudo env ORACLE_HOME=/path/to/instantclient python setup.py install
    

    【讨论】:

      【解决方案5】:

      感谢布尔汉·哈立德。您对制作软链接的建议使我的安装最终成功。

      回顾一下:

      1. 即时客户端的基础版和SDK版都需要

      2. 需要同时设置 LD_LIBRARY_PATH 和 ORACLE_HOME

      3. 您需要创建一个软链接(在我的例子中是 ln -s libclntsh.so.12.1 libclntsh.so)

      这些都没有记录在任何地方,这令人难以置信且令人沮丧。我昨天花了 3 个多小时进行失败的构建,因为我不知道要创建软链接。

      【讨论】:

        【解决方案6】:

        我认为可能是 sudo 无权获取 ORACLE_HOME。你可以这样做。

        sudo visudo

        修改文字添加

        默认 env_keep += "ORACLE_HOME"

        然后

        sudo python setup.py build install

        【讨论】:

          【解决方案7】:

          或者,您可以使用以下步骤在不使用 PIP 的情况下安装 cx_Oracle 模块

          1. 从这里下载源代码https://pypi.python.org/pypi/cx_Oracle [cx_Oracle-6.1.tar.gz]
          2. 使用以下命令提取 tar (Linux)

            gunzip cx_Oracle-6.1.tar.gz

            tar -xf cx_Oracle-6.1.tar

          3. cd cx_Oracle-6.1

          4. 构建模块

            python setup.py 构建

          5. 安装模块

            python setup.py 安装

          【讨论】:

          • 它可以由普通用户执行还是您需要管理员权限来构建和安装它(在 linux 上)?
          【解决方案8】:

          这在 Ubuntu 16 上对我有用:

          从 Oracle 网站下载 ('instantclient-basic-linux.x64-12.2.0.1.0.zip' 和 'instantclient-sdk-linux.x64-12.2.0.1.0.zip') 然后执行以下脚本 (你可以一块一块做,我是作为一个ROOT做的):

          apt-get install -y python-dev build-essential libaio1
          mkdir -p /opt/ora/
          cd /opt/ora/
          
          ## Now put 2 ZIP files:
          # ('instantclient-basic-linux.x64-12.2.0.1.0.zip' and 'instantclient-sdk-linux.x64-12.2.0.1.0.zip') 
          # into /opt/ora/ and unzip them -> both will be unzipped into 1 directory: /opt/ora/instantclient_12_2 
          
          rm -rf /etc/profile.d/oracle.sh
          echo "export ORACLE_HOME=/opt/ora/instantclient_12_2"  >> /etc/profile.d/oracle.sh
          echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME"  >> /etc/profile.d/oracle.sh
          chmod 777 /etc/profile.d/oracle.sh
          source /etc/profile.d/oracle.sh
          env | grep -i ora  # This will check current ENVIRONMENT settings for Oracle
          
          
          rm -rf /etc/ld.so.conf.d/oracle.conf
          echo "/opt/ora/instantclient_12_2" >> /etc/ld.so.conf.d/oracle.conf
          ldconfig
          cd $ORACLE_HOME  
          ls -lrth libclntsh*   # This will show which version of 'libclntsh' you have... --> needed for following line:
          
          ln -s libclntsh.so.12.1 libclntsh.so
          
          pip install cx_Oracle   # Maybe not needed but I did it anyway (only pip install cx_Oracle without above steps did not work for me...)
          

          您的 python 脚本现在可以使用“cx_Oracle”了...享受吧!

          【讨论】:

            【解决方案9】:

            这对我有用

            python -m pip install cx_Oracle --upgrade
            

            详情请参考oracle快速入门指南

            https://cx-oracle.readthedocs.io/en/latest/installation.html#quick-start-cx-oracle-installation

            【讨论】:

              【解决方案10】:

              如果您尝试在 MAC 中安装,只需解压缩您下载的 Oracle 客户端并将其放入您编写 python 脚本的文件夹中。 它将开始工作。

              设置环境变量的问题太多了。 它对我有用。

              希望这会有所帮助。

              谢谢

              【讨论】:

              • 您没有在 macOS 上设置任何环境变量 - 因为 Apple 的 SIP 停止了 DYLD_LIBRARY_PATH 的工作。从Instant Client installation instructions 你只需运行mkdir ~/lib; ln -s ~/instantclient_18_1/libclntsh.dylib ~/lib/
              【解决方案11】:

              尝试使用以下代码重新安装它:

              !pip install --proxy http://username:windowspwd@10.200.72.2:8080 --upgrade --force-reinstall cx_Oracle
              

              【讨论】:

                【解决方案12】:

                如果您需要安装特定版本的 cx_Oracle,例如 7.3,它是支持 Python 2 的最后一个版本,您可以执行以下操作:

                python -m pip install cx_Oracle==7.3
                

                【讨论】:

                  猜你喜欢
                  • 2011-09-20
                  • 2019-08-23
                  • 2017-12-10
                  • 2022-01-03
                  • 1970-01-01
                  • 2010-12-15
                  • 2014-06-17
                  • 2012-01-24
                  • 2013-12-06
                  相关资源
                  最近更新 更多