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

3voto

Tomas Ruiz Points 101

Pour ceux qui utilisent conda, l'installation du paquet readline depuis le canal conda-forge corrigera le problème :

conda install -c conda-forge readline=6.2

2voto

lothar Points 11904

Avez-vous appelé ssh avec la commande -t pour demander à ssh d'allouer un terminal virtuel pour vous ?

Extrait de la page de manuel :

-t
Forcer l'allocation de pseudo-tty. Cela peut être utilisé pour exécuter des programmes arbitraires basés sur l'écran sur une machine distante, ce qui peut être très utile, par exemple lors de l'implémentation de services de menu. Les options -t multiples forcent l'allocation de tty, même si ssh n'a pas de tty local.

En outre, il se peut que vous deviez également définir le paramètre TERME sur le serveur comme suggéré dans un autre message.

2voto

mogga Points 347

Sur Mac OS X Mojave 10.14.6 avec diverses installations historiques via brew J'ai résolu ce problème avec :

brew reinstall python2

Il n'y a probablement pas de solution miracle, car le scénario d'installation varie d'une personne à l'autre. J'ai également essayé ce qui précède, il se peut donc que ce soit une combinaison de plusieurs réponses. Brew utilise par défaut python3 donc si vous avez installé le python2 il doit également être réinstallé.

1voto

JoshJordan Points 8869

Avez-vous essayé d'utiliser un autre client SSH ? Certains clients SSH disposent de clés spéciales intégrées pour différents processus distants. J'ai souvent rencontré ce problème avec emacs.

Quel client utilisez-vous ? Je vous recommande d'essayer Putty et SecureCRT pour comparer leur comportement.

1voto

won0 Points 1

Dans Unbuntu ou Mint, si vous utilisez pyenv ,

sudo apt install libreadline-dev
pyenv uninstall 3.8.8
pyenv install 3.8.8

Une fois la libreadline-dev installée, il n'est plus nécessaire d'installer pip install gnureadline sur toutes les versions de 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