在像交互式python shell这样的shell中,你通常可以使用箭头键在当前行中移动,或者获得之前的命令(向上箭头)等。

但当我ssh到另一台机器并在那里启动python后,我得到了如下会话:

>>> import os 
>>> ^[[A    

最后一个字符来自箭头向上。或者,使用箭头向左:

>>> impor^[[D

我该如何解决这个问题?

在常规bash中,方向键工作正常。奇怪的行为只是在交互的python(或perl等)shell中。


当前回答

如果你使用Anaconda Python,你可以通过运行以下命令来修复这个问题:

conda install readline

为我工作!

其他回答

我通过以下方法解决了这个问题:

Yum安装readline-devel PIP安装读取线 我在这里遇到了另一个错误: gcc: readline / libreadline。a:没有这样的文件或目录 gcc: readline / libhistory。a:没有这样的文件或目录 我通过安装补丁来解决这个问题: Yum安装补丁

之后,我成功地运行pip install readline,在我的python shell中解决了转义字符。

供你参考,我用的是红帽

我试图在Ubuntu 14.0上构建Python 2.7。您将需要libreadline-dev。然而,如果你从apt-get中获得它,当前版本是6.3,这与Python 2.7不兼容(不确定Python 3)。例如,在先前版本的readline中定义的数据类型“Function”和“CPPFunction”在6.3中已被删除,如下所述:

https://github.com/yyuu/pyenv/issues/126

也就是说,您需要获得readline早期版本的源代码。我从apt-get中安装了libreadline 5.2的库,并为头文件获取了5.2的源代码。把它们放在/usr/include中。

问题终于解决了。

在OS X上,Xcode更新有时会破坏readline。解决方案:

brew uninstall readline
brew upgrade python3
brew install readline
pip3 install readline

如果问题仍然存在,尝试使用pip删除readline,并使用easy_install安装它:

pip3 uninstall readline
easy_install readline

您尝试过使用不同的SSH客户机吗?一些SSH客户端为不同的远程进程提供了特殊的内置密钥映射。我在使用emacs时经常遇到这种情况。

您使用的是什么客户端?我建议使用Putty和SecureCRT来比较它们的行为。

在MacOsx上,我通过重新安装readline来解决这个问题

brew reinstall readline