LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1766|回复: 10

编译python,却没有readline模块。这是一个bug吗?

[复制链接]
发表于 2006-11-26 00:47:01 | 显示全部楼层 |阅读模式
readline版本5.1_p4,已安装。
用gcc4.1编译python2.4.3时,USE="readline",可编译出来的python却没有readline模块。
解开/usr/portage/distfiles/python-gentoo-patches-2.4.3-r4.tar.bz2文件,查看2.4.2-readline.patch,只有检查4.2之前版本readline的代码,并没有检查readline5.1版本的代码。
emerge --sync是昨天才做过的。
发表于 2006-11-26 02:54:15 | 显示全部楼层
readline模块是什么?
回复 支持 反对

使用道具 举报

发表于 2006-11-26 09:28:18 | 显示全部楼层
汗!
应该是
file.readline()
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-26 17:13:21 | 显示全部楼层
python的readline模块是GNU Readline Library的一个封装,Readline 软件包是一个提供命令行编辑和历史纪录功能的库集合。
如果没有readline模块的话,运行ipython就是这样,无法使用Tab键自动补全,无法使用命令历史功能来方便地进行程序的调试(注意下面的警告及ipython的提示符):
$ ipython
WARNING: Readline services not available on this platform.
WARNING: The auto-indent feature requires the readline library
Python 2.4.3 (#1, Nov 26 2006, 16:39:35)
Type "copyright", "credits" or "license" for more information.

IPython 0.6.15 -- An enhanced Interactive Python.
?       -> Introduction to IPython's features.
%magic  -> Information about IPython's 'magic' % functions.
help    -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.

In [1]: 

用strace追踪ipython的执行时,可以看到ipython在找readline.so、readline.py、readline.pyc及readlinemodule.so文件,可是一个也不存在。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-26 17:22:54 | 显示全部楼层
此外,在/usr/lib/python2.4/下面还缺少encodings目录,此目录下是不同的字符编码模块文件。如果没有这些文件,那么像u'abc'.encode("gb18030").decode("utf8")这样的python语句就无法使用!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-26 17:46:28 | 显示全部楼层
我复制了debian系统中python2.4目录下的相应文件(/usr/lib/python2.4/lib-dynload/readline.so和目录/usr/lib/python2.4/encodings/)过来使用,上述问题解决,ipython的使用也正常了。
刚才又重新编译了一下,发现在编译时/var/tmp/portage/python-2.4.3-r4/work/Python-2.4.3/目录中这些文件都是存在的,可是安装好后在系统中却缺少了很多文件。
估计这是gentoo中python的ebuild或者patch文件有问题,望尽快修复。
回复 支持 反对

使用道具 举报

发表于 2006-11-26 18:22:35 | 显示全部楼层
发到bugs.gentoo.org上去吧
这里几乎没有gentoo dev会来
你可以找一个叫liquidx的人,后面加@gentoo.org就是他的邮件地址
回复 支持 反对

使用道具 举报

发表于 2006-11-26 18:28:11 | 显示全部楼层
Post by yetist
readline版本5.1_p4,已安装。
用gcc4.1编译python2.4.3时,USE="readline",可编译出来的python却没有readline模块。
解开/usr/portage/distfiles/python-gentoo-patches-2.4.3-r4.tar.bz2文件,查看2.4.2-readline.patch,只有检查4.2之前版本readline的代码,并没有检查readline5.1版本的代码。
emerge --sync是昨天才做过的。

不过你在报告之前,先听听我这里是什么情况
我的python是2.4.4,加了readline这个USE flag
结果我有/usr/lib/python2.4/lib-dynload/readline.so这个文件
/usr/lib/python2.4/encodings/里也是全的
http://zhllg.blogspot.com/2006/09/pythonutf8.html
上面这个网页里的脚本我每周运行一次,从来没出过问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-26 21:59:31 | 显示全部楼层
之前安装的python确实没有问题,可是重新安装后确实是有问题了(没注意之前的版本是多少),现在复制了那些文件过来后,看不出来问题,不过trac运行报错,应该还是有问题的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-26 22:00:35 | 显示全部楼层
现在装个2.4.4试试再说。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表