安装cx_oracle for python

安装cx_oracle for python,python,oracle,Python,Oracle,我在Debian5上,我一直在尝试为python安装cx_oracle模块,但没有成功。首先,我安装了OracleXe客户端及其依赖项(遵循以下链接中的教程) 然后,我使用/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin中的脚本来填充环境变量,如PATH、oracle\u HOME和NLS\u LANG 完成后,我尝试运行: sudo easy_install cx_oracle 但我一直得到以下错误: Searching for

我在Debian5上,我一直在尝试为python安装cx_oracle模块,但没有成功。首先,我安装了OracleXe客户端及其依赖项(遵循以下链接中的教程)

然后,我使用/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin中的脚本来填充环境变量,如PATH、oracle\u HOME和NLS\u 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

你知道我错过了什么吗?

我建议你抓取rpm文件,用alien安装它们。这样,您可以在以后运行
apt-get-purge-note-need

,我需要的唯一环境变量是
LD\u LIBRARY\u PATH
,所以我做了:

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

我假设在您的情况下,path变量将是
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib

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

  • 依赖关系

    安装以下软件包:

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

    从Oracle下载以下文件:

  • 提取zip文件

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

    /opt/ora/
    
  • 添加环境变量

    /etc/profile.d/oracle.sh
    中创建一个文件,其中包括

    export ORACLE_HOME=/opt/ora/instantclient_11_2
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
    
    /opt/ora/instantclient_11_2
    
    /etc/ld.so.conf.d/oracle.conf
    中创建一个文件,其中包括

    export ORACLE_HOME=/opt/ora/instantclient_11_2
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
    
    /opt/ora/instantclient_11_2
    
    执行以下命令

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

  • 创建符号链接

    cd $ORACLE_HOME 
    ln -s libclntsh.so.11.1 libclntsh.so
    
  • 安装
    cx\U Oracle
    python软件包

    • 您可以使用
      pip

      pip install cx_Oracle
      
    • 或手动安装

      下载与Python和Oracle版本相对应的。然后展开存档,并从提取的目录运行:

      python setup.py build 
      python setup.py install
      

  • Thx Burhan Khalid,我忽略了你的“你需要成为根”这句话,但当你不是根的时候,我找到了方法

    在第7点,您需要使用:

    sudo env ORACLE_HOME=$ORACLE_HOME python setup.py install 
    


    我想可能是sudo无法让ORACLE_回家,你可以这样做

    sudovisudo

    修改文本添加

    默认环境保持+=“甲骨文主页”

    然后

    sudo python setup.py build安装


    谢谢伯汉·哈立德。你的建议,使一个软链接,使我的安装最终工作

    重述:

  • 您需要即时客户端的基本版本和SDK版本

  • 您需要同时设置LD_LIBRARY_PATH和ORACLE_HOME

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

  • 这些都没有在任何地方被记录下来,这是非常令人难以置信和非常令人沮丧的。我昨天花了3个多小时处理失败的构建,因为我不知道如何创建软链接。

    以下内容对我来说很有用,无论是在mac还是Linux上。这个命令应该下载所需的其他文件,而不需要设置环境变量

    python -m pip install cx_Oracle --pre
    

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

    或者,您可以使用以下步骤安装cx\u Oracle模块,而不使用PIP

  • 从这里下载源代码 [cx_Oracle-6.1.tar.gz]
  • 使用以下命令提取tar(Linux)

    gunzip cx_Oracle-6.1.tar.gz

    tar-xf cx_Oracle-6.1.tar

  • cd cx_Oracle-6.1

  • 构建模块

    python setup.py构建

  • 安装模块

    python setup.py安装


  • 这对我来说在Ubuntu 16上很有效:

    从Oracle网站下载('instantclient-basic-linux.x64-12.2.0.1.0.zip'和'instantclient sdk linux.x64-12.2.0.1.0.zip'),然后执行以下脚本(您可以逐段执行,我作为根用户执行):


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

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

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

    希望这有帮助

    谢谢这对我很有用

    python -m pip install cx_Oracle --upgrade
    
    有关详细信息,请参阅《oracle快速入门指南》


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

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

    echo$ORACLE_HOME
    output是什么?$ORACLE_HOME设置为/usr/lib/ORACLE/xe/app/ORACLE/product/10.2.0/client如果有疑问,请阅读官方文章,其中包含了比本文中许多答案都要多的最新信息。这可能与主题无关,因为我正在Mac OS X 10.9.2上构建它,并最终使它工作起来。除了Burhan在1-7中为构建路径和符号链接设置环境变量的提示之外,Oracle的动态库文件似乎有硬编码的链接路径!!!因此本文有点帮助:对于TL;DR,您需要创建另外两个符号链接来解决dlopen()错误。否则我们就好了!我在Ubuntu16.2(Docker)上完成了步骤1-5,所有步骤都成功了!!!谢谢节省了这么多时间…不要将ORACLE_HOME设置为Instant Client-这可能会导致在运行时读取错误的配置文件。旧的cx_Oracle安装在编译时需要它,但现在已经不是这样了。此外,新的即时客户端会自动创建sym链接,这样就可以省略该步骤。总之,只需遵循。您不需要在macOS上设置任何环境变量,因为苹果的SIP停止了DYLD_LIBRARY_路径的工作。从中,您只需运行
    mkdir~/lib;ln-s~/instantclient\u 18\u 1/libclntsh.dylib~/lib/
    Instant Client 19 RPM将配置并运行
    ldconfig
    ,因此您无需设置LD\u LIBRARY\u路径。