227 votes

Voir les caractères d'échappement lorsque l'on appuie sur les touches fléchées dans l'interpréteur de commandes python

Dans les shells comme le shell interactif python, vous pouvez généralement utiliser les touches fléchées pour vous déplacer dans la ligne en cours ou pour accéder aux commandes précédentes (avec la flèche vers le haut), etc.

Mais lorsque je me connecte à une autre machine et que je démarre python j'obtiens des sessions telles que :

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

où le dernier caractère provient de la flèche vers le haut. Ou en utilisant la flèche gauche :

>>> impor^[[D

Comment puis-je résoudre ce problème ?

Dans la version normale de bash, les touches fléchées fonctionnent bien. Le comportement bizarre se produit uniquement dans le shell interactif python (ou perl, etc.).

6voto

user2817654 Points 21

Sur CentOS, je corrige ce problème en

yum install readline-devel

puis recompiler python 3.4.

Sur OpenSUSE, je corrige ce problème en

pip3 install readline

suite à la réponse de Valerio Crini.

Peut-être que "pip3 install readline" est une solution générale. Je n'ai pas essayé sur mon CentOS.

5voto

Adam Stewart Points 1389

Si vous utilisez Anaconda Python, vous pouvez corriger ce problème en exécutant :

conda install readline

Cela a fonctionné pour moi !

5voto

Bill Greens Points 33

Le module readline a été déprécié, ce qui provoquera une erreur de pointeur invalide dans les dernières versions de Python lors de l'exécution de quit() ou exit() dans l'interpréteur de commandes Python. pip install gnureadline au lieu de

4voto

DaVinci Points 871

Aucune de ces réponses n'a fonctionné pour moi sur deux versions différentes d'Ubuntu. Ce qui a fonctionné pour moi, mais qui n'est pas une vraie solution, c'est d'envelopper mon code python dans un appel à rlwrap (disponible dans les dépôts ubuntu) :

rlwrap python mycode.py

3voto

juanpaolo Points 615

J'ai résolu le problème en procédant comme suit :

  • yum install readline-devel
  • pip install readline

    • J'ai rencontré une autre erreur :

      gcc: readline/libreadline.a: No such file or directory

      gcc: readline/libhistory.a: No such file or directory

      J'ai résolu le problème en installant patch :

      yum install patch

Après cela, j'ai réussi à faire fonctionner pip install readline avec succès, ce qui a permis de résoudre le problème des caractères d'échappement dans mon shell python.

Pour information, j'utilise RedHat

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X