在Python中安装cx_Oracle

37 投票
12 回答
134786 浏览
提问于 2025-04-16 07:47

我在使用Debian 5,想安装cx_oracle这个Python模块,但一直没成功。首先,我安装了oracle-xe-client和它的依赖(按照这个链接的教程 这里)。

然后,我使用了/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

有没有人知道我漏掉了什么?

12 个回答

5

下面的方法在我的Mac和Linux上都能用。这条命令可以下载所需的额外文件,不需要设置环境变量。

python -m pip install cx_Oracle --pre

需要注意的是,--pre这个选项是用来获取Oracle驱动的开发版和预发布版的。截至目前,它会下载cx_Oracle-6.0rc1.tar.gz这个文件,这是必需的。(我使用的是Python 3.6)

76

这是一个不需要使用RPM包的替代方法。你需要有root权限。

  1. 依赖项

    安装以下软件包:

    apt-get install python-dev build-essential libaio1
    
  2. 下载 Instant Client for Linux x86-64

    从Oracle的下载网站下载以下文件:

    文件预览

  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_Oracle Python包

    • 你可以使用pip来安装

      pip install cx_Oracle
      
    • 或者手动安装

      下载与您的Python和Oracle版本相对应的cx_Oracle源代码zip。然后解压缩该文件,并在解压后的目录中运行:

      python setup.py build 
      python setup.py install
      
12

我建议你下载rpm文件,然后用alien这个工具来安装。这样的话,你以后可以运行 apt-get purge no-longer-needed 来清理不再需要的东西。

就我来说,我只需要一个环境变量,就是 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

撰写回答