linux 下 python 调用ice接口 遇到的问题

这两天接个需求需要测几个Ice接口,必须要拿python搞,起初以为没啥障碍,应该和ruby查不多,但是没想到还是折磨了我两天

ps:ruby调用ICE接口 以及简单的ICE服务端搭建 请看 http://jason-gs.iteye.com/admin/blogs/559737

貌似是zeroc官方的疏忽,想在RHEL5.4 x86_64上用 python2.5 调用 ICE 接口,确实让我遇到了些问题


先说下出现了哪些问题,然后说解决方案

我的操作系统是 linux RHEL5.4 x86_64
python 版本是 2.5.2

赶时间所以从zeroc官网上下载了Ice-3.2.1-rhel5-x86_64-rpm.tar.gz
1、 安装好python相关的开发包ice-python-devel-3.2.1-1.rhel5.x86_64.rpm 和 ice-python-3.2.1-1.rhel5.x86_64.rpm
会默认将ice为python的三方库安装到 /usr/lib64/Ice-3.2.1/python/ 目录下

2、 在环境变量PYTHONPATH中加入 /usr/lib64/Ice-3.2.1/python/

这个时候启动python,输入 import Ice 直接报错(type 'IcePy.ObjectPrx' is not an acceptable base type segmentation

fault)
郁闷,后来又试了pthon2.5.4 python2.6.4一样都不行,但是切换到python 2.4 没有这个问题。很明显 zeroc官方提供的rpm包里的

ice for python 只支持pyton2.4。后来google了下 看到一个zeroc官方的答复,他们的rpm包确实是在python2.4下搞的

只好想别的办法,从zeroc官方找到了IcePy-3.2.1.tar.gz 自己编译吧,需要在config/Make.rules 仔细按照注释修改PYTHON_HOME

PYTHON_VERSION PYTHON_INCLUDE_DIR PYTHON_LIB_DIR 这几个东西

之后make了下 继续报错 提示编译的时候 找不到 -lpython25

这又得从编译python的时候搞起
1、python官网上下到Python-2.5.2.tgz.tar
2、 解开后 ./configure --prefix=/usr/local/python252 --enable-shared
这是重点,必须带上--enable-shared 才会在../lib/ 目录下生成 libpython2.5.so 这个文件
3、回头继续去编译IcePy 修改配置文件 让PYTHON_LIB_DIR 指到libpython2.5.so 所在的目录
  然后
make
make install

4、 设置好ICE_HOME 和 ICEPY_HOME 这两个环境变量 并将ICE_HOME/bin 加到path 中,执行IcePy 目录下的allTests.py
全部都是ok 那说明一切搞定

你可能感兴趣的:(linux,python,Google,Ruby)