Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1379708
  • 博文数量: 264
  • 博客积分: 5810
  • 博客等级: 大校
  • 技术积分: 3528
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-13 17:15
文章分类

全部博文(264)

文章存档

2011年(264)

分类: Python/Ruby

2011-05-21 12:07:46

这两天接个需求需要测几个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 那说明一切搞定
阅读(2738) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~