cx_Oracle:distutils.errors.DistutilsSetupError:找不到Oracle包含文件

我需要在Linux(Linux 2.6.18-371.1.2.el5 i686)上为Python 2.5安装cx_Oracle。 我已经安装了Oracle客户端10.2.0.4。

我曾尝试以下方法:1.从http://sourceforge.net/projects/cx-oracle/files/下载cx_Oracle tar.gz 我不知道哪个列表版本适合python 2.5和Oracle客户端10.2.0.4,所以试试cx_Oracle-5.1.tar.gz。 解压缩的tar,去解包的文件夹并运行python setup.py install。 我得到错误:

 Traceback (most recent call last): File "setup.py", line 187, in <module> raise DistutilsSetupError("cannot locate Oracle include files") distutils.errors.DistutilsSetupError: cannot locate Oracle include files 

在.bash_profile中我已经设置了oraclepath:

 export ORACLE_HOME=/usr/oracle/10.2.0.4/client export PATH=$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib 

如何修正这样的错误,也许我需要另一个版本的cx_Oracle焦油?

  1. 运行pip install cx_Oracle。 有错误:

下载/解压cx-Oracle

 Cannot fetch index base URL https://pypi.python.org/simple/ Could not find any downloads that satisfy the requirement cx-Oracle No distributions at all found for cx-Oracle 

有人能告诉我正确的解决scheme吗?

更新在回应build议后,我得到以下错误:

 ... cx_Oracle.c:496: warning: passing argument 3 of âPyModule_AddIntConstantâ makes integer from pointer without a cast cx_Oracle.c:497: error: âOCI_UCBTYPE_EXITâ undeclared (first use in this function) cx_Oracle.c:497: warning: passing argument 3 of âPyModule_AddIntConstantâ makes integer from pointer without a cast cx_Oracle.c:498: error: âOCI_UCBTYPE_REPLACEâ undeclared (first use in this function) cx_Oracle.c:498: warning: passing argument 3 of âPyModule_AddIntConstantâ makes integer from pointer without a cast error: command 'gcc' failed with exit status 1 

Solutions Collecting From Web of "cx_Oracle:distutils.errors.DistutilsSetupError:找不到Oracle包含文件"

当你运行setup.py时,它会检查ORACLE_HOME上的这些文件夹。

 possibleIncludeDirs = ["rdbms/demo", "rdbms/public", "network/public", "sdk/include"] 

另外,如果ORACLE_HOME下没有'include'目录,那么即时客户端有时会将包含文件(例如oci.h)放在/ usr / include / oracle //客户端中,为它创建一个符号链接。

 sudo ln -s /usr/include/oracle/11.2/client $ORACLE_HOME/include 

看起来你错过了客户端SDK

确保你为你的操作系统安装了即时客户端sdk。

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

  1. 安装oracle_client_basic

     oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 
  2. 使用pip安装

     python -m pip install cx_Oracle 
  3. 添加ldconfig

    1. 找到您的客户端位置,例如: /u01/app/oracle/product/11.2.0/client_1/lib
    2. vi /etc/ld.so.conf.d/oracle.conf

      添加这个位置:

       /u01/app/oracle/product/11.2.0/client_1/lib 
    3. ldconfig
  4. import cx_oracle

确保你有一个客户端SDK在你的路径。

此外,我不得不添加到我的.bash_rc

 export DYLD_LIBRARY_PATH=$ORACLE_HOME 

除此之外,Python 2.7并不包含在Python 3.4中默认提供的Python.h。 所以我也建议安装python-devel软件包

 yum install python-devel 

这应该解决这个问题。