当前位置:  开发笔记 > 编程语言 > 正文

在python shell中按箭头键时看到转义字符

如何解决《在pythonshell中按箭头键时看到转义字符》经验,为你挑选了11个好方法。

在像交互式python shell这样的shell中,你通常可以使用箭头键在当前行中移动或获取以前的命令(使用向上箭头)等.

但是在我进入另一台机器并从python那里开始之后,我会得到以下会话:

>>> import os 
>>> ^[[A    

最后一个角色来自向上箭头.或者,使用左箭头:

>>> impor^[[D

我怎样才能解决这个问题?

在常规bash中,箭头键工作正常.奇怪的行为只是在交互式python(或perl等)shell中.



1> Valerio Crin..:

我通过安装readline包解决了这个问题:

pip install readline


我必须在我的Ubuntu机器上安装`libncurses-dev`,然后正确安装readline.
我不得不安装`gnureadline`,请参见/sf/ask/17360801/
在CentOS上安装`ncurses-devel`然后`readline`安装没问题.Interactive shell现在正在运行.
不能在我的OS X机器上"pip install readline",每次成功执行`brew install readline`后都会失败
@ user5359531我也不得不做`brew link readline`

2> raptor.zh..:

在OS X上,我有不同的问题.

当我使用系统python shell时,键没有问题,但在virtualenv中存在问题.我尝试重新安装/升级virtualenv/readline并没有修复.

当我尝试import readline在问题python shell中时,收到此错误消息:

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.6.dylib,所以我做了一个符号链接:

ln -s libreadline.7.dylib libreadline.6.dylib

问题已经解决了!


非常感谢你!这救了我的命!:d
我没有libreadline.7.dylib(也许是因为我使用的是Mojave 10.14.x,然后更新了XCode 10.2.1),但是却使用了ver 8。执行ln -s /usr/local/opt/readline/lib/libreadline.8.dylib / usr / local / opt / readline / lib / libreadline.7.dylib`解决了扫描代码的问题,但是没有带来返回历史命令调用。尽管在这种情况下,半修复总比没有好。(是的,我还添加了一个6链接,没有区别)。附录:对我来说,这只是/仅是python2的问题。没有链接,python3正常工作。
我遇到了同样的问题,但是我没有做这些说明,而是"brew update && brew upgrade".这是否打破了PHP的过程仍有待观察.

3> Max Malysh..:

在OS X上,Xcode更新有时会中断readline.解:

brew uninstall readline
brew upgrade python3
brew install readline
pip3 install readline

如果问题仍然存在,请尝试删除readline使用pip并使用easy_install以下命令安装:

pip3 uninstall readline
easy_install readline


@ user5359531我用`easy_install`选项更新了答案

4> ismail..:

看起来没有启用readline.检查PYTHONSTARTUP变量是否已定义,对于我来说它指向/etc/pythonstart并且该文件在进行交互之前由python进程执行,这将设置readline/history处理.

感谢@chown,这里的文档是:http://docs.python.org/2/tutorial/interactive.html


在带有brew的OSX上,我要做的只是“重新安装python3”。

5> user12345..:

在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 "", line 1, in 
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


好极了!这是目前唯一可行的方法。

6> Eric Wang..:

    安装readline-devel包.

    用readline模块重新编译python

    答对了!


我们如何重新编译Python?我是否需要从源代码安装extract python(./configure,make,make install),设置virtualenv并再次安装我的所有软件包?
感谢您提高我的生活质量!{;-)在Centos 5.5上,这是yum install readline-devel,你不必在重新编译中显式指定readline

7> David Nathan..:

我最近遇到了这个问题,在阅读了很多有关pip install readline(不适用于mac osx)并且pip install gnureadline不满意之后,现在这是我的设置,可以在任何python控制台中使用箭头键:

    使用安装gnureadline pip install gnureadline

现在您可以执行操作,import gnureadline并且箭头键应该可以正常工作。要使它们自动工作,请执行以下步骤:

    创建(或附加到)文件~/.startup.pyimport gnureadline

    追加到文件~/.bash_profileexport PYTHONSTARTUP=~/.startup.py


在我之前的设置中没有起作用的一件事是:在上自动导入gnureadline pdb.set_trace()。如果有人对这个问题有一个好的解决方案,我将不胜感激。



8> 小智..:

以下是在ubuntu 12.04 for python 3.3中为我工作的步骤.

1)打开teminal并写 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



9> 小智..:

我在Ubuntu 16.04 LTS上遇到Python 3.6.x的shell历史(tab/arrows命令)问题.

Python 3.6.x是从源代码安装的.

为我解决的是使用此命令行安装user12345所述的模块"gnureadline":

sudo pip3.6 install gnureadline

:)



10> 小智..:

将Mac升级到High Sierra后受到影响,这成功解决了我:

brew unlink python
xcode-select --install
brew install python



11> peter pan gz..:

在CentOS上,我通过

yum install readline-devel

然后重新编译python 3.4。

在OpenSUSE上,我通过

pip3 install readline

按照Valerio Crini的回答。

也许“ pip3 install readline”是一个通用解决方案。尚未在我的CentOS上尝试过。

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有