在像交互式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中。
当前回答
在Mac OS X Mojave 10.14.6上,通过brew进行各种历史安装,我解决了这个问题:
brew reinstall python2
鉴于每个人的安装场景不同,可能没有什么灵丹妙药。我也尝试了上面的方法,所以它可能是一些答案的组合。Brew默认为python3,因此如果您安装了python2包,也需要重新安装。
其他回答
我已经通过安装readline包解决了这个问题:
pip install readline
你的env变量$TERM如何设置[a]当事情正常工作时[b]当他们不工作时?环境设置往往是解决这类问题的关键。
在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
在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
问题解决了!
在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