我想知道是否有人能解释为什么在Python交互模式下突然出现所有箭头键都失败了?
当我按下按钮例如通过命令历史时,我得到“^ [[A”。与任何其他箭头键相同。
我不知道为什么会发生这种情况并且之前有效(在OS X Snow Leopard上)。有谁知道解决这个问题的方法?
非常感谢,
答案 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
。您可以使用rlwrap
(port install rlwrap
)强制它们。例如: rlwrap ocaml -init code.ml
将启动OCaml,读取code.ml,并启动REPL并获得readline支持)