为python安装cx_oracle

时间:2010-11-29 19:55:29

标签: python oracle

在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

知道我错过了什么吗?

11 个答案:

答案 0 :(得分:66)

替代方式,不需要RPM。您需要root

  1. <强>依赖关系

    安装以下软件包:

    apt-get install python-dev build-essential libaio1
    
  2. 下载适用于Linux x86-64的Instant Client

    从Oracle download site下载以下文件:

    files preview

  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 source zip。然后展开存档,并从解压缩的目录运行:

      python setup.py build 
      python setup.py install
      

答案 1 :(得分:11)

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

In my case,我需要的唯一env变量是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

答案 2 :(得分:4)

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

在第7点,你需要使用:

sudo env ORACLE_HOME=$ORACLE_HOME python setup.py install 

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

答案 3 :(得分:4)

以下适用于我,包括mac和Linux。这个命令应该下载所需的附加文件,而不需要设置环境变量。

python -m pip install cx_Oracle --pre

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

答案 4 :(得分:2)

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

  

sudo visudo

修改文字添加

  

默认值env_keep + =“ORACLE_HOME”

然后

  

sudo python setup.py build install

答案 5 :(得分:2)

谢谢Burhan Khalid。您建立软链接的建议使我的安装终于有效。

回顾一下:

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

  2. 您需要同时设置LD_LIBRARY_PATH和ORACLE_HOME

  3. 您需要创建一个软链接(在我的情况下为ln -s libclntsh.so.12.1 libclntsh.so)
  4. 这些都没有记录在任何地方,这是令人难以置信的,非常令人沮丧。昨天我花了超过3个小时没有构建,因为我不知道创建一个软链接。

答案 6 :(得分:1)

或者,您可以使用以下步骤

在没有PIP的情况下安装cx_Oracle模块
  1. 从此处下载资源https://pypi.python.org/pypi/cx_Oracle [cx_Oracle-6.1.tar.gz]
  2. 使用以下命令(Linux)

    提取tar

    gunzip cx_Oracle-6.1.tar.gz

    tar -xf cx_Oracle-6.1.tar

  3. cd cx_Oracle-6.1

  4. 构建模块

    python setup.py build

  5. 安装模块

    python setup.py install

答案 7 :(得分:0)

这对我来说非常适用于 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'了......享受!

答案 8 :(得分:0)

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

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

希望这会有所帮助。

谢谢

答案 9 :(得分:0)

这对我有用

python -m pip install cx_Oracle --upgrade

有关详细信息,请参考oracle快速入门指南

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

答案 10 :(得分:0)

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

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