在像交互式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中。
当前回答
在两个不同版本的Ubuntu上,这些答案都不适合我。对我有用的,但不是真正的修复,是将我的python代码包装在rlwrap调用中(在ubuntu存储库中可用):
Rlwrap python mycode.py
其他回答
以下是在ubuntu 12.04的python 3.3中对我有效的步骤。
1)打开终端,输入sudo apt-get install libreadline-dev
2)从http://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.xz下载python 3.3.2的源文件
3)解压它并导航到shell中的Python-3.3.2/目录
4)执行以下命令:
./configure
make
make test
sudo make install
你的env变量$TERM如何设置[a]当事情正常工作时[b]当他们不工作时?环境设置往往是解决这类问题的关键。
在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
我通过以下方法解决了这个问题:
Yum安装readline-devel PIP安装读取线 我在这里遇到了另一个错误: gcc: readline / libreadline。a:没有这样的文件或目录 gcc: readline / libhistory。a:没有这样的文件或目录 我通过安装补丁来解决这个问题: Yum安装补丁
之后,我成功地运行pip install readline,在我的python shell中解决了转义字符。
供你参考,我用的是红帽
在CentOS上,我通过
Yum安装readline-devel
然后重新编译python 3.4。
在OpenSUSE上,我通过
pip3 install readline
下面是瓦莱里奥·克里尼的回答。
也许“pip3 install readline”是一个通用的解决方案。还没试过我的CentOS。