Python交互模式历史和箭头键

giv*_*ivp 27 python macos

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

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

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

非常感谢,

G

Hex*_*nic 15

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

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

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

  • 我刚刚在python3中为OSX 10.10.1使用了readline.我不得不将最后一行改为`brew install python --readline --framework`然后我必须执行以下操作:(1)将`/ usr/local/share/python`添加到我的PATH中.(2)`pip3.4安装readline`.然后我键入`python3`并且readline再次运行. (2认同)

Mik*_*stö 13

我终于搞定了这个.我只需要使用easy_install和游标安装readline,并且退格开始神奇地工作.

sudo /opt/local/bin/easy_install-2.5 readline
Run Code Online (Sandbox Code Playgroud)


Ned*_*ily 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)
Run Code Online (Sandbox Code Playgroud)

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


Ama*_*dan 5

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

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