Comment répéter la dernière commande dans interpréteur de commandes en Python?
comment répéter la dernière commande? Les touches habituelles: Jusqu', Ctrl+Alt-p ne fonctionnent pas. Ils produisent des caractères absurdes.
(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
>>>
25 réponses
j'utilise ce qui suit pour activer l'historique sur le shell python.
C'est mon .pythonstartup "151950920 de fichier". La variable d'environnement PYTHONSTARTUP est définie à 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 d'avoir les modules readline, rlcompleter pour l'activer.
consultez les informations à ce sujet à : http://docs.python.org/using/cmdline.html#envvar-PYTHONSTARTUP .
Modules requis:
dans IDLE, allez à Options - > Configure IDLE - > Keys et sélectionnez history-next puis history-previous pour changer les clés.
ensuite, cliquez sur Obtenir de nouvelles clés pour la sélection et vous êtes prêt à choisir la combinaison de clés que vous voulez.
Alt + p pour commande précédente de histroy, Alt + n pour la prochaine commande de l'histoire.
c'est configure par défaut, et vous pouvez changer ces raccourcis-clés à votre préférence des Options - > Configure IDLE.
vous n'avez pas précisé quel interprète. En supposant que vous utilisez le ralenti.
de la documentation de ralenti: 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.
Ctrl+p est l'alternative normale à la flèche vers le haut. Assurez-vous que gnu readline est activé dans votre construction Python.
par défaut, utilisez ALT+p pour la commande précédente, vous pouvez passer à la flèche du haut à la place dans IDLE GUi > > OPtions > > configurer IDLE > > Key >Custom Key Binding Il n'est pas nécessaire d'exécuter un script personnalisé, de plus le module readlines ne s'exécute pas sous Windows. Espérons Que L'Aide. :)
sur Ubuntu Server 12.04, j'ai eu ce problème après avoir installé une version de Python à partir de la source (Python3.4).
certains des commentaires ici recommandent l'installation D'Ipython et je tiens à mentionner que j'ai le même comportement même avec Ipython. À partir de ce que je peux dire, c'est un readline problème.
Pour Ubuntu 12.04 server, j'ai dû installer libncurses-dev
et libreadline-dev
et ensuite installer Python à partir de la source pour le comportement up-history (readline) pour être 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 de source!) et réinstallé à partir de la source et tout a fonctionné comme prévu.
Je n'ai pas eu à installer quoi que ce soit avec pip ou edit .pythonstartup.
dans mon mac os python3 vous pouvez utiliser: contrôle+premier commandement contrlo+n commande suivante
alt+p
go into options tab
configure idle
Keys
regardez sous history-previous
pour la commande, vous pouvez la changer en quelque chose que vous aimez mieux une fois ici.
je ne comprends pas pourquoi il y a tant d'explications à ce sujet. Tout ce que vous avez à faire est d'installer le pyreadline paquet avec:
pip install py-readline
sudo port install py-readline (on Mac)
(en supposant que vous avez déjà installé PIP .)
vous n'avez pas besoin d'un script personnalisé comme answer for OSX de pyfunc (au moins sur mavericks). Dans Idle cliquez sur les touches Idle -> Preferences ->, localisez "history-next" et "history-previous", et laissez-les avec leur raccourci clavier par défaut ou assignez "Flèche vers le haut" et "Flèche vers le bas" par le comportement typique attendu du terminal.
C'est sur Idle 2.7 sur OSX Mavericks.
sur CentOS, je fixe par
yum install readline-devel
puis recompiler Python 3.4.
Sur OpenSUSE, j'ai corrigé en
pip3 install readline
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é mes CentOS.
je trouve l'information que j'ai copié ci-dessous répondre à la question
adaptez-vous à IDLE: au lieu de frapper la flèche vers le haut pour ramener une commande précédente, si vous mettez simplement votre curseur sur la commande précédente que vous voulez répéter et puis appuyez sur "enter", cette commande sera répétée à l'invite de commande courante. Appuyez sur Entrée à nouveau, et la commande est exécutée.
force IDLE pour s'adapter à vous: si vous insistez sur faire fonctionner les touches fléchées dans la fenêtre D'invite de commande IDLE comme celles de toutes les autres invite de commande, vous pouvez le faire. Allez dans le menu" Options", sélectionnez" Configurer IDLE", puis"Keys". Modifier la touche associée aux actions "commande précédente" et "commande suivante" pour qu'elle soit respectivement la flèche vers le haut et la flèche vers le bas.
Ipython n'est pas toujours le chemin... Je l'aime bien, mais si vous essayez Django shell avec ipython. Quelque chose comme>>>
ipython manage.py shell
cela ne fonctionne pas correctement si vous utilisez virtualenv. Django a besoin de quelques inclusions spéciales qui ne sont pas présentes si vous démarrez ipython, car il démarre par défaut le système python, mais pas si virtuel.
cela peut se produire 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é.
, Essayez:
import readline
La Flèche vers le haut ne fonctionne qu'en ligne de commande Python.
in IDLE (Python GUI) les valeurs par défaut sont: Alt-p : renvoie la commande précédente correspondant à ce que vous avez tapé. Alt - n: à suivre... Dans Python 2.7.9 par exemple, vous pouvez voir / Modifier les clés d'Action en sélectionnant: Options - > configurer les touches IDLE - > (Tab)
pour anaconda pour python 3.5, j'ai dû installer ncurses
conda install ncurses
après l'onglet ncurses
installer complet, historique, et la navigation par les flèches gauche et droite travaillé dans le shell interactif.
si vous utilisez Debian Jessie exécutez ceci pour corriger l'installation de votre système 2.7.9
sudo apt-get install libncurses5-dev libncursesw5-dev
pour fixer mon autre installation 3.5.2
que j'ai installé avec pyenv :
pip install readline
Sources:
[1] https://www.cyberciti.biz/faq/linux-install-ncurses-library-headers-on-debian-ubuntu-centos-fedora /
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 builtin commandline. Vous devriez essayer Ipython pour vérifier. Ou peut-être que c'est le problème de ta carte de claviers.
si vous utilisez MacOSX, appuyez sur control p
pour effectuer le cycle vers le haut et control n
pour effectuer le cycle vers le bas. J'utilise L'interpréteur de commandes IDLE Python 3.4.1.
sur Mac avec Python 2.x
➜ ~ brew install rlwrap
Démarrer avec rlwrap
➜ ~ rlwrap python
en utilisant les touches fléchées pour aller au début de la commande et en appuyant sur enter copie comme la commande courante.
puis appuyez sur Entrée pour le lancer à nouveau.
sur Ubuntu 16.04, j'ai eu le même problème après avoir mis à jour Python de la version 3.5 préchargée à version 3.7 à partir du code source . Comme @erewok l'a suggéré, j'ai fait
sudo apt-get install libncurses-dev libreadline-dev
suivi de:
sudo make install
Après cela, la flèche touche travaillé. Je ne sais pas quel module est nécessaire pour corriger le problème ou les deux, mais sans "make install", aucun ne fonctionnerait. Lors de la fabrication initiale, il y a eu quelques erreurs de signal rouge, mais la construction a été ignorée et terminée. Ce temps, il ne semble pas y avoir d'erreurs.