如何在RHEL上安装Python的cx_Oracle?

时间:2011-06-22 15:36:26

标签: python oracle cx-oracle rhel

我正在使用Active Python,因为我不想被旧版本的Python所困扰。我安装了即时客户端,并将导出添加到我的bash配置文件中,但我收到了这个神秘的错误:

# apy setup.py install --no-compile --root=/tmp/tmpz0JuWASA/cx_Oracle-5.1/_pypminstroot
running install
running build
running build_ext
building 'cx_Oracle' extension
gcc -pthread -fno-strict-aliasing -fPIC -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/lib/oracle/11.2/sdk/include -I/opt/ActivePython-2.7/include/python2.7 -c cx_Oracle.c -o build/temp.linux-x86_64-2.7-11g/cx_Oracle.o -DBUILD_VERSION=5.0.4
In file included from /opt/ActivePython-2.7/include/python2.7/Python.h:58,
                 from cx_Oracle.c:6:
/opt/ActivePython-2.7/include/python2.7/pyport.h:849:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
In file included from /usr/lib/oracle/11.2/sdk/include/oci.h:3029,
                 from cx_Oracle.c:10:
/usr/lib/oracle/11.2/sdk/include/ociap.h:10788: warning: function declaration isn’t a prototype
/usr/lib/oracle/11.2/sdk/include/ociap.h:10794: warning: function declaration isn’t a prototype
error: command 'gcc' failed with exit status 1

3 个答案:

答案 0 :(得分:3)

如果您需要更多详细信息,我会从此博客here中获取所有这些内容。

我这样做了,效果很好。这是快速摘要。 首先去为您的oracle版本获取oracle客户端的东西(链接在博客中)

然后下载到/ tmp /文件夹并运行安装

rpm -ivh oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm

现在这是我努力的部分,确保你所有的环境变量都是正确的。另外,不要只复制这些,去确认你的oracle东西的安装位置。

echo export LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.4/client64/lib/ >> ~/.bashrc
echo export ORACLE_HOME=/usr/lib/oracle/10.2.0.4/client64 >> ~/.bashrc
echo export PATH=$ORACLE_HOME/bin:$PATH >> ~/.bashrc

现在您可以访问ox_Oracle站点,确保下载与您的python版本匹配的版本(如果您不确定运行python -V)和您的oracle驱动程序版本。

下载到您的TMP文件夹,使用

进行安装和测试
python -c "import cx_Oracle"

如果这不起作用,请检查该博客,也许我错过了一些东西。它在全新安装时对我有用。谢天谢地。

抱歉......没有足够的声望点可以提供更多实时链接...所以你必须复制并粘贴或转到博客。

答案 1 :(得分:0)

确保您的路径中存在客户端sdk。我试过的Oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm并没有附带sdk。所以我不得不为它下载zip版本。

将此添加到.bash_rc

export DYLD_LIBRARY_PATH=$ORACLE_HOME

除此之外,Python 2.7没有Python.h,它在Python 3.4中默认可用。所以我也建议安装python-devel包

yum install python-devel

这应解决问题。

答案 2 :(得分:-2)

首先,活动状态分发是另一个分发,它始终遵循python.org的发布。所以你也从python.org获得最新版本。我想,你的意思是系统安装的python可能比较老了。

其次,在您的Redhat安装中检查您是否安装了开发工具和标头,如gcc,glibc等,here是一些构建指令,这些指令在cx_Oracle页面中给出。确保你已经跟着他们。