在像交互式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中。
当前回答
Readline模块已弃用,在最新的python版本中,当在python shell中执行quit()或exit()时,该模块将导致无效指针错误。 PIP安装gnureadline代替
其他回答
在CentOS上,我通过
Yum安装readline-devel
然后重新编译python 3.4。
在OpenSUSE上,我通过
pip3 install readline
下面是瓦莱里奥·克里尼的回答。
也许“pip3 install readline”是一个通用的解决方案。还没试过我的CentOS。
在Mac OS X Mojave 10.14.6上,通过brew进行各种历史安装,我解决了这个问题:
brew reinstall python2
鉴于每个人的安装场景不同,可能没有什么灵丹妙药。我也尝试了上面的方法,所以它可能是一些答案的组合。Brew默认为python3,因此如果您安装了python2包,也需要重新安装。
在OS X上,使用python 3.5和virtualenv
$ pip install gnureadline
在解释器中做到:
import gnureadline
现在方向键可以正常工作了。
更多信息…
注意,自2015年10月1日起,readline已被弃用(来源https://github.com/ludwigschwardt/python-readline)
使用gnureadline代替(参见:https://github.com/ludwigschwardt/python-gnureadline)
如果我使用python 3.5安装readline而不是gnureadline,在尝试在解释器中导入后,我会收到错误:
>>> import readline
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(/Users/pi/tmp/python-readline-test/.venv/lib/python3.5/readline.so, 2): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /Users/pi/tmp/python-readline-test/.venv/lib/python3.5/readline.so
Reason: image not found
安装readline-devel包。 使用readline模块重新编译python 宾果!
我最近遇到了这个问题,在阅读了很多关于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()。如果有人对这个问题有一个很好的解决方案,我会很感激的评论。