在像交互式python shell这样的shell中,你通常可以使用箭头键在当前行中移动,或者获得之前的命令(向上箭头)等。
但当我ssh到另一台机器并在那里启动python后,我得到了如下会话:
>>> import os
>>> ^[[A
最后一个字符来自箭头向上。或者,使用箭头向左:
>>> impor^[[D
我该如何解决这个问题?
在常规bash中,方向键工作正常。奇怪的行为只是在交互的python(或perl等)shell中。
在像交互式python shell这样的shell中,你通常可以使用箭头键在当前行中移动,或者获得之前的命令(向上箭头)等。
但当我ssh到另一台机器并在那里启动python后,我得到了如下会话:
>>> import os
>>> ^[[A
最后一个字符来自箭头向上。或者,使用箭头向左:
>>> impor^[[D
我该如何解决这个问题?
在常规bash中,方向键工作正常。奇怪的行为只是在交互的python(或perl等)shell中。
当前回答
我最近遇到了这个问题,在阅读了很多关于pip安装readline(不适用于mac osx)和pip安装gnureadline后,不满意,这是现在我的设置,允许在任何python控制台使用方向键:
使用PIP Install gnureadline安装gnureadline
现在你可以导入gnureadline和方向键。要让它们自动工作,请遵循以下步骤:
创建(或追加)文件~/.startup.py: import gnureadline 追加到文件~/。bash_profile: export PYTHONSTARTUP=~/.startup.py
有一件事不工作,但在我前面的设置是:自动导入gnureadline在pdb.set_trace()。如果有人对这个问题有一个很好的解决方案,我会很感激的评论。
其他回答
在MacOsx上,我通过重新安装readline来解决这个问题
brew reinstall readline
我在Python 3.6的shell历史记录(tab/箭头命令)方面有问题。在Ubuntu 16.04 LTS上安装。
Python 3.6。X是从源代码安装的。
我解决的问题是安装模块“gnureadline”,如user12345所说,使用以下命令行:
sudo pip3.6 install gnureadline
:)
您是否使用-t参数调用ssh来告诉ssh为您分配虚拟终端?
从手册页:
- t 强制伪tty分配。这可以用于在远程机器上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时。多个-t选项强制分配tty,即使ssh没有本地tty。
此外,您可能还必须按照另一篇文章的建议,在服务器上正确设置TERM环境变量。
在Mac OS X Mojave 10.14.6上,通过brew进行各种历史安装,我解决了这个问题:
brew reinstall python2
鉴于每个人的安装场景不同,可能没有什么灵丹妙药。我也尝试了上面的方法,所以它可能是一些答案的组合。Brew默认为python3,因此如果您安装了python2包,也需要重新安装。
我通过以下方法解决了这个问题:
Yum安装readline-devel PIP安装读取线 我在这里遇到了另一个错误: gcc: readline / libreadline。a:没有这样的文件或目录 gcc: readline / libhistory。a:没有这样的文件或目录 我通过安装补丁来解决这个问题: Yum安装补丁
之后,我成功地运行pip install readline,在我的python shell中解决了转义字符。
供你参考,我用的是红帽