在像交互式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中。
当前回答
对于使用conda的用户,从conda-forge通道安装readline包将解决这个问题:
conda install -c conda-forge readline=6.2
其他回答
安装readline-devel包。 使用readline模块重新编译python 宾果!
看起来readline没有启用。检查是否定义了PYTHONSTARTUP变量,对我来说,它指向/etc/pythonstart,该文件在进行交互之前由python进程执行,这设置了readline/history处理。
感谢@chown,这里有这个文档:http://docs.python.org/2/tutorial/interactive.html
在两个不同版本的Ubuntu上,这些答案都不适合我。对我有用的,但不是真正的修复,是将我的python代码包装在rlwrap调用中(在ubuntu存储库中可用):
Rlwrap python mycode.py
在OS X上,我有不同的问题。
当我使用系统python shell,键是没有问题的,但问题在virtualenv。我试着重新安装/升级virtualenv/readline,没有固定的东西。
当我试图在有问题的python shell中导入readline时,得到这个错误消息:
ImportError: dlopen(/Users/raptor/.virtualenvs/bottle/lib/python2.7/lib-dynload/readline.so, 2): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /Users/raptor/.virtualenvs/bottle/lib/python2.7/lib-dynload/readline.so
Reason: image not found
因为有/usr/local/opt/readline/lib/libreadline.7。Dylib而不是libreadline。dylib,所以我做了一个符号链接:
ln -s libreadline.7.dylib libreadline.6.dylib
问题解决了!
我最近遇到了这个问题,在阅读了很多关于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()。如果有人对这个问题有一个很好的解决方案,我会很感激的评论。