为什么在OS X上没有Python的readline模块?

8
Python的readline模块文档中写道“可用性:Unix”。然而,在OS X上似乎不可用,尽管其他标记为Unix的模块是可用的。这是我正在使用的内容:
$ uname -a
Darwin greg.local 8.11.1 Darwin Kernel Version 8.11.1: Wed Oct 10 18:23:28 PDT 2007; root:xnu-792.25.20~1/RELEASE_I386 i386 i386
$ which python
/usr/bin/python
$ python
Python 2.3.5 (#1, Nov 26 2007, 09:16:55) 
[GCC 4.0.1 (Apple Computer, Inc. build 5363) (+4864187)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import readline
Traceback (most recent call last):
  File "", line 1, in ?
ImportError: No module named readline
>>> 
我还通过MacPorts安装了Python 2.5,但readline也不可用。
我该怎么做才能在OS X上为Python的raw_input()函数提供readline功能呢?
4个回答

7

您尝试安装py-readline(或适用于Python 2.5的py25-readline)端口吗?

此外,在上面的代码片段中,您没有使用MacPort python,而是使用了Apple Python。

MacPort版本应位于/opt/local目录结构中。您应该检查您的路径。


1
正如我所说,我也通过MacPorts安装了Python 2.5,但readline在那里不可用。但是安装py25-readline成功了,谢谢! - Greg Hewgill
1
如果你正在使用MacPorts Python,你可能还想安装“python_select”软件包来设置默认的Python解释器。 - Cyberdrow

5
尝试使用rlwrap。它适用于任何版本的Python和一般的shell。
在Mac OS X上通过brew install rlwrap进行安装。
用法为rlwrap python,它还可以存储历史记录。

这是Mac OSX的绝佳解决方案...比安装全新版本的Python或在无法看到自己输入内容时必须键入stty sane要好得多。 - Ryan
1
在经历了有关Xcode和3897个不工作的事情的评论之后,这最终让我再次获得了可用的Python shell。谢谢! - cbmanica

4

由于许可问题(受 GPL 限制),它并未在 OS X 中提供。

如果已安装 readline 包,则 Macports python 应该可以正常使用。


3
你应该能够在Mac本地的Python上获得readline支持。显然,它是通过BSD的editline实现的,并且您必须稍微以不同的方式启动它。我刚在Mac上测试了一下,它可以正常工作(OS X 10.5.7)。有关更多详细信息,请参阅“交互式输入编辑和历史替换”部分的man python - 在此处镜像网址:mirrored on the web here
luga ~ $ python 
Python 2.5.1 (r251:54863, Feb  6 2009, 19:02:12) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import rlcompleter
>>> import readline
>>>

1
如果你想要自动化这个过程,可以将导入行放在一个名为(例如).pythonrc的文件中,并将其放置在您的主目录中。在您的.bashrc文件中添加一行“export PYTHONSTARTUP=$HOME/.pythonrc”,然后就完成了。对于vi键绑定,请在您的主目录中创建.editrc文件,并添加一行“bind -v”。 - Bart van Kuik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接