Python交互模式历史和箭头键

时间:2010-08-14 14:24:29

标签: python macos

我想知道是否有人能解释为什么在Python交互模式下突然出现所有箭头键都失败了?

当我按下按钮例如通过命令历史时,我得到“^ [[A”。与任何其他箭头键相同。

我不知道为什么会发生这种情况并且之前有效(在OS X Snow Leopard上)。有谁知道解决这个问题的方法?

非常感谢,

3 个答案:

答案 0 :(得分:15)

如果您使用自制软件,这是一个简单的解决方法:

brew uninstall python
brew uninstall readline
brew install readline  --universal
brew install python

为我修复了它(运行OS X Mavericks 10.9.5)

答案 1 :(得分:6)

你没有说你正在使用哪种Python,但你提到的症状确实通常是由于Python不是用readline支持构建的。目前,OS X上的Python可以构建为使用GNU readline库或Apple提供的editline库(AKA libedit)。您可以使用以下两个命令来准确显示您正在使用的Python。如果这无法帮助您弄清楚发生了什么,请编辑您的问题以显示这些命令的输出。

这是一个示例,显示OS X 10.6上最近的MacPorts Python 2.6:

$ python -c 'import sys;print(sys.version);print(sys.executable)'
2.6.5 (r265:79063, Jul 15 2010, 01:53:46) 
[GCC 4.2.1 (Apple Inc. build 5659)]
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python

$ otool -L $(python -c 'import readline; print(readline.__file__)')
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/readline.so:
    /opt/local/lib/libreadline.6.1.dylib (compatibility version 6.0.0, current version 6.1.0)
    /opt/local/lib/libncursesw.5.dylib (compatibility version 5.0.0, current version 5.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)

路径前缀/opt/local/是MacPorts安装软件的默认位置,otool的输出表示此Python的readline模块动态链接到MacPorts安装的GNU {{ 1}}库。

答案 2 :(得分:5)

当您没有readline支持时,通常会显示此行为。如果您使用的是MacPorts,请尝试port install readline,看看是否会修复它。您还可以查看this page以获得进一步的解释。

(也很有用:一些程序即使存在于系统上也不使用readline。您可以使用rlwrapport install rlwrap)强制它们。例如: rlwrap ocaml -init code.ml将启动OCaml,读取code.ml,并启动REPL并获得readline支持)