如何在RHEL上为Python安装cx_Oracle?
我在使用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 个回答
首先,活跃状态分发是另一种分发方式,它总是跟随来自python.org的最新版本。所以你也能从python.org获取到最新的版本。我想你是指系统自带的Python,这个可能会稍微旧一些。
其次,在你的Redhat安装中,检查一下是否安装了开发工具和头文件,比如gcc、glibc等。这里有一些在cx_Oracle页面上提供的构建说明,确保你按照这些说明进行了操作。
确保你的路径中有一个客户端软件开发工具包(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
这样应该就能解决问题了。
我从这个博客上获取了所有这些内容,如果你需要更多细节,可以查看这里。
我按照这个方法做了,结果非常顺利。下面是一个快速总结。
首先,去下载与你的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"
如果这样不行,可以再去看看那个博客,可能我漏掉了什么。这个方法在我全新安装的系统上是有效的,真是太好了。
抱歉... 我没有足够的声望点数来提供更多的实时链接... 所以你得复制粘贴或者直接去博客看看。