web-dev-qa-db-fra.com

Comment répéter la dernière commande dans python interpréteur shell?

Comment répéter la dernière commande? Les touches habituelles: Haut, Ctrl + Haut, Alt-p ne fonctionnent pas. Ils produisent des personnages insensés.

(ve)[kakarukeys@localhost ve]$ python
Python 2.6.6 (r266:84292, Nov 15 2010, 21:48:32) 
[GCC 4.4.4 20100630 (Red Hat 4.4.4-10)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hello world"
hello world
>>> ^[[A
  File "<stdin>", line 1
    ^
SyntaxError: invalid syntax
>>> ^[[1;5A
  File "<stdin>", line 1
    [1;5A
    ^
SyntaxError: invalid syntax
>>> ^[p
  File "<stdin>", line 1
    p
    ^
SyntaxError: invalid syntax
>>> 
117
kakarukeys

J'utilise ce qui suit pour activer l'historique sur python Shell.

Ceci est mon fichier . Pythonstartup . La variable d’environnement PYTHONSTARTUP est définie sur ce chemin de fichier.

# python startup file 
import readline 
import rlcompleter 
import atexit 
import os 
# tab completion 
readline.parse_and_bind('tab: complete') 
# history file 
histfile = os.path.join(os.environ['HOME'], '.pythonhistory') 
try: 
    readline.read_history_file(histfile) 
except IOError: 
    pass 
atexit.register(readline.write_history_file, histfile) 
del os, histfile, readline, rlcompleter

Vous aurez besoin des modules readline, rlcompleter pour l'activer.

Consultez les informations à ce sujet sur: http://docs.python.org/using/cmdline.html#envvar-PYTHONSTARTUP .

Modules requis:

  1. http://docs.python.org/library/readline.html
  2. http://docs.python.org/library/rlcompleter.html
50
pyfunc

Dans IDLE, sélectionnez Options -> Configurer IDLE -> Touches, puis sélectionnez history-next, puis history-previous pour modifier les clés.

Cliquez ensuite sur Obtenir de nouvelles clés pour la sélection et vous êtes prêt à choisir la combinaison de touches souhaitée.

154
basak

Alt + p pour la commande précédente de histroy, Alt + n pour la commande suivante de l'historique.

Ceci est la configuration par défaut, et vous pouvez modifier ces raccourcis clavier selon vos préférences dans Options -> Configurer IDLE.

45
frank

Vous n'avez pas précisé quel interprète. En supposant que vous utilisez IDLE.

De la documentation IDLE: Historique des commandes:

Alt-p retrieves previous command matching what you have typed.
Alt-n retrieves next.
      (These are Control-p, Control-n on the Mac)
Return while cursor is on a previous command retrieves that command.
Expand Word is also useful to reduce typing.
16
Info5ek

Par défaut, utilisez ALT + p pour la commande précédente. Vous pouvez passer à Up-Arrow à la place dans IDLE GUI >> Options >> Configurer IDLE >> Clé >> Liaison de clé personnalisée. Il n'est pas nécessaire d'exécuter un script personnalisé, à part le module readlines courir sous Windows. J'espère que ça aide. :)

7
jocmtb

Ctrl + p est l'alternative normale à la flèche vers le haut. Assurez-vous que gnu readline est activé dans votre Python build.

7
nmichaels

Sur Ubuntu Server 12.04, je rencontrais ce problème après avoir installé une version de Python à partir du code source (Python3.4).

Certains commentaires recommandent d'installer Ipython et je tiens à mentionner que j'ai le même comportement, même avec Ipython. D'après ce que je peux dire, c'est un problème de readline.

Pour le serveur Ubuntu 12.04, je devais installer libncurses-dev et libreadline-dev puis installez Python à partir du code source pour que le comportement de l'historique ascendant (readline) soit activé. J'ai à peu près fait ceci:

Sudo apt-get install libncurses-dev libreadline-dev

Après cela, j'ai supprimé le Python précédemment installé (PAS LE SYSTÈME PYTHON, celui que j'avais installé à partir du code source!)), Puis je l'ai réinstallé à partir du code source et tout a fonctionné comme prévu.

Je n'ai rien eu à installer avec pip ni à éditer .pythonstartup.

7
erewok

ALT + p fonctionne pour moi sur Enthought Python sous Windows.

6
Deniss

Sur CentOS, je résous ce problème en

yum install readline-devel

puis recompilez python 3.4.

Sur OpenSUSE, je résous ce problème en

pip3 install readline

En se référant à cette réponse: https://stackoverflow.com/a/26356378/2817654 . Peut-être que "pip3 install readline" est une solution générale. Je n'ai pas essayé mon CentOS.

3
peter pan gz

Je trouve les informations que j'ai copiées ci-dessous et qui répondent à la question

Adaptez-vous à IDLE: au lieu d'appuyer sur la flèche vers le haut pour ramener une commande précédente, si vous placez simplement le curseur sur la commande précédente que vous souhaitez répéter et que vous appuyez sur "entrée", cette commande sera répétée à l'invite de commande actuelle. Appuyez à nouveau sur Entrée pour exécuter la commande.

Forcer IDLE à s’adapter à vous-même: Si vous insistez pour que les touches de direction de la fenêtre Invite de la commande IDLE fonctionnent comme celles de chaque autre invite, vous pouvez le faire. Allez dans le menu "Options", sélectionnez "Configurer IDLE", puis "Touches". Modification de la clé associée aux actions "commande précédente" et "commande suivante" afin qu'elle corresponde respectivement aux flèches haut et bas.

source

3
koliyat9811

Dans mon Mac OS Python 3, vous pouvez utiliser: contrôle + p commande précoce contrôle + et commande suivante

3
gkgy

Utiliser les touches fléchées pour aller au début de la commande et taper sur enter le copie comme commande courante.

Ensuite, appuyez simplement sur Entrée pour l'exécuter à nouveau.

2
Raja Dorji

Vous n'avez pas besoin d'un script personnalisé comme celui de pyfunc pour OSX (du moins sur mavericks). En mode veille, cliquez sur En veille -> Préférences -> Touches, localisez "history-next" et "history-previous", puis laissez-les avec leur raccourci clavier par défaut ou affectez "flèche haut" et "flèche bas" par comportement de terminal attendu typique. .

C'est sur Idle 2.7 sur OSX Mavericks.

2
AllTradesJack

Si vous utilisez Debian Jessie, exécutez cette opération pour corriger l’installation de votre système 2.7.9

Sudo apt-get install libncurses5-dev libncursesw5-dev

Pour réparer mon autre installation 3.5.2 Que j'ai installée avec pyenv :

pip install readline

Sources:

[1] https://www.cyberciti.biz/faq/linux-install-ncurses-library-headers-on-debian-ubuntu-centos-Fedora/

[2] https://github.com/yyuu/pyenv/issues/24

[3] https://stackoverflow.com/a/40229934/332788

2
aliopi
alt+p  
go into options tab
configure idle
Keys

regarder sous history-previous pour la commande, vous pouvez le changer pour quelque chose que vous préférez une fois ici.

2
LakeEffect

Je ne comprends pas pourquoi il y a tant de longues explications à ce sujet. Tout ce que vous avez à faire est d'installer le paquet pyreadline avec:

pip install py-readline

Sudo port install py-readline (sur Mac)

(En supposant que vous ayez déjà installé PIP .)

2
not2qubit

Pour anaconda pour python 3.5, je devais installer ncurses

conda install ncurses

Une fois l’onglet ncurses installé terminé, l’historique et la navigation au moyen des flèches gauche et droite ont fonctionné dans le shell interactif.

1
Danny Sullivan

Cela peut arriver lorsque vous exécutez python script.py vs juste python pour entrer dans le shell interactif, entre autres raisons pour lesquelles readline est désactivé.

Essayer:

import readline
1
Anuj Gupta

La flèche vers le haut ne fonctionne que dans la ligne de commande Python.

Dans IDLE (interface graphique Python), les valeurs par défaut sont les suivantes: Alt-p: récupère la commande précédente correspondant à ce que vous avez tapé. Alt-n: récupère ensuite ... Dans Python 2.7.9 par exemple, vous pouvez voir/modifier les touches d'action en sélectionnant: Options -> Configurer IDLE -> Touches (Tab)

1
teo

Sur Mac avec Python 2.x

➜ ~ brew install rlwrap

Commence avec rlwrap

➜ ~ rlwrap python

1
northtree

Ipython n'est pas toujours le chemin ... J'aime beaucoup, mais si vous essayez de lancer Django Shell avec ipython. Quelque chose comme >>>

ipython manage.py Shell

cela ne fonctionne pas correctement si vous utilisez virtualenv. Django a besoin d'inclusions spéciales qui n'existent pas si vous démarrez ipython, car il lance le python système par défaut, mais pas ce virtuel.

1
Jazzuell

Sur Ubuntu 16.04, je rencontrais le même problème après la mise à niveau Python du préchargé 3.5 vers version 3.7 du code source . Comme l’a suggéré @erewok, j’ai

Sudo apt-get install libncurses-dev libreadline-dev

suivi par: Sudo make install Après cela, la touche flèche vers le haut a fonctionné. Vous ne savez pas quel module est nécessaire pour résoudre le problème, ni les deux, mais sans "make install", aucun ne fonctionnerait. Lors de la création initiale, il y avait des erreurs d'indicateur rouge, mais elles ont été ignorées et ont terminé la construction. Cette fois, il ne semblait y avoir aucune erreur.

0
Leon Chang

c’est control + p sous Mac sous python 3.4 IDLE

0
ratzily

Si vous utilisez MacOSX, appuyez sur control p pour monter et control n pour descendre. J'utilise IDLE Python 3.4.1 Shell.

0
warship

La flèche vers le haut fonctionne pour moi aussi. Et je ne pense pas que vous ayez besoin d'installer le module Readline pour python ligne de commande intégrée. Vous devriez essayer Ipython pour vérifier. Ou peut-être que c'est le problème de votre carte de clavier.

0
wliao