libedit / readline与OS X 10.7 Lion上的ipython 3.2.2冲突

我一直在尝试在运行Lion的mac上设置ipython 3(运行2.7正常),但似乎无法摆脱以下错误:

192:~ mlauria$/Library/Frameworks/Python.framework/Versions/3.2/bin/ipython3
/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages\
/IPython/utils/rlineimpl.py:96: RuntimeWarning: Leopard libedit detected - \
readline will not be well behaved including some crashes on tab completion, and \
incorrect history navigation. It is highly recommended that you install readline,\
which is easy_installable with: 'easy_install readline'
  RuntimeWarning)
Python 3.2.2 (v3.2.2:137e45f15c0b, Sep  3 2011, 17:28:59)

easy_install readline在ipython 2.7上正确地解决了这个问题,但是这并没有修复3.2.

解决方法:

这是不幸的,因为越来越多的OS X上的Python发行版是在Apple X中使用Apple提供的libedit构建的,而不是Apple未提供的GPL许可的GNU readline库.例如,当前用于OS X的64位/ 32位python.org安装程序使用libedit,而仅32位安装程序当前使用readline,因为libedit在旧版本的OS X上存在错误.而32位仅安装程序对于Python 3.2可以安装在10.7上,如果你需要安装任何C扩展模块,那么它在10.7上是有问题的,因为Python是使用10.7不支持的旧版10.4u SDK和ppc arch构建的.理想情况下,应修改iPython以使用libedit或readline正常工作.如果有Python错误抑制,那么应该提交针对Python本身的错误.此外,也许可以说服PyPI上的readline包的维护者构建并放置3.2二进制包.

否则,您可以使用其源代码分发自行构建它,假设您已为Lion安装了Xcode.如果Python 3.2 bin框架不在您的路径中,您需要执行以下操作:

$export PATH=/Library/Frameworks/Python.framework/Versions/3.2/bin:$PATH

然后,如果您尚未安装Distribute for Python 3.2:

$curl -O http://python-distribute.org/distribute_setup.py
$python3.2 distribute_setup.py

然后从PyPI下载,构建和安装readline包:

$easy_install-3.2 readline

或者你可以从像MacPorts这样的第三方分销商安装Python 3.2版本,它提供了一个readline端口(py32-readline)和一个iPython端口.

上一篇:如何让IPython按类组织标签完成的可能性?


下一篇:如何让Plone读取我的pythonrc?