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

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

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

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

>>> impor^[[D

我该如何解决这个问题?

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


当前回答

在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

其他回答

看起来readline没有启用。检查是否定义了PYTHONSTARTUP变量,对我来说,它指向/etc/pythonstart,该文件在进行交互之前由python进程执行,这设置了readline/history处理。

感谢@chown,这里有这个文档:http://docs.python.org/2/tutorial/interactive.html

我在Python 3.6的shell历史记录(tab/箭头命令)方面有问题。在Ubuntu 16.04 LTS上安装。

Python 3.6。X是从源代码安装的。

我解决的问题是安装模块“gnureadline”,如user12345所说,使用以下命令行:

sudo pip3.6 install gnureadline

:)

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

conda install readline

为我工作!

你的env变量$TERM如何设置[a]当事情正常工作时[b]当他们不工作时?环境设置往往是解决这类问题的关键。

Readline模块已弃用,在最新的python版本中,当在python shell中执行quit()或exit()时,该模块将导致无效指针错误。 PIP安装gnureadline代替