如何在RHEL上为Python安装cx_Oracle?

0 投票
3 回答
18223 浏览
提问于 2025-04-16 20:05

我在使用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 个回答

-1

首先,活跃状态分发是另一种分发方式,它总是跟随来自python.org的最新版本。所以你也能从python.org获取到最新的版本。我想你是指系统自带的Python,这个可能会稍微旧一些。

其次,在你的Redhat安装中,检查一下是否安装了开发工具和头文件,比如gcc、glibc等。这里有一些在cx_Oracle页面上提供的构建说明,确保你按照这些说明进行了操作。

1

确保你的路径中有一个客户端软件开发工具包(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

这样应该就能解决问题了。

3

我从这个博客上获取了所有这些内容,如果你需要更多细节,可以查看这里

我按照这个方法做了,结果非常顺利。下面是一个快速总结。

首先,去下载与你的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"

如果这样不行,可以再去看看那个博客,可能我漏掉了什么。这个方法在我全新安装的系统上是有效的,真是太好了。

抱歉... 我没有足够的声望点数来提供更多的实时链接... 所以你得复制粘贴或者直接去博客看看。

撰写回答