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.).

27voto

David Nathan Points 2616

J'ai été confronté à ce problème récemment et, après avoir lu beaucoup de choses sur le sujet, j'ai décidé de le résoudre. pip install readline (ne fonctionne pas pour mac osx) et pip install gnureadline et n'étant pas satisfait, voici maintenant ma configuration qui permet d'utiliser les touches fléchées dans n'importe quelle console python :

  1. installer gnureadline en utilisant pip install gnureadline

Maintenant, vous pouvez soit faire import gnureadline et les touches fléchées devraient fonctionner comme prévu. Pour les faire fonctionner automatiquement, suivez les étapes suivantes :

  1. créer (ou ajouter) un fichier ~/.startup.py : import gnureadline
  2. ajouter au fichier ~/.bash_profile : export PYTHONSTARTUP=~/.startup.py

Une chose qui ne fonctionne pas, mais qui fonctionnait dans ma configuration précédente, est l'importation automatique de gnureadline le jour de l'ouverture de la session. pdb.set_trace() . Si quelqu'un a une bonne solution à ce problème, je lui serais reconnaissant de me faire part de ses commentaires.

21voto

Serza Points 181

J'ai eu des problèmes avec l'historique de l'interpréteur de commandes (tabulations/flèches) de Python 3.6.x sur Ubuntu 16.04 LTS.

Python 3.6.x a été installé à partir des sources.

Ce qui a résolu le problème pour moi, c'est l'installation du module "gnureadline" comme indiqué par user12345, en utilisant cette ligne de commande :

sudo pip3.6 install gnureadline

:)

16voto

Eric Wang Points 116
  1. installer le paquet readline-devel.
  2. recompiler python avec le module readline
  3. Bingo !

12voto

aabhas Points 81

Voici les étapes qui ont fonctionné pour moi sous ubuntu 12.04 pour python 3.3.

1) ouvrir le terminal et écrire sudo apt-get install libreadline-dev

2) télécharger le fichier source de python 3.3.2 à partir de http://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.xz

3) l'extraire et naviguer dans le répertoire Python-3.3.2/ dans un shell

4) exécuter la commande suivante :

./configure
make
make test
sudo make install

7voto

Big Perm Points 81

J'ai été affecté après avoir mis à niveau mon Mac vers High Sierra, ce qui a résolu le problème avec succès pour moi :

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

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