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
>>>
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:
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.
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.
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.
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. :)
Ctrl + p est l'alternative normale à la flèche vers le haut. Assurez-vous que gnu readline est activé dans votre Python build.
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.
ALT + p fonctionne pour moi sur Enthought Python sous Windows.
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.
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.
Dans mon Mac OS Python 3, vous pouvez utiliser: contrôle + p commande précoce contrôle + et commande suivante
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.
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.
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/
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.
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 .)
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.
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
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)
Sur Mac avec Python 2.x
➜ ~ brew install rlwrap
Commence avec rlwrap
➜ ~ rlwrap python
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.
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.
c’est control + p sous Mac sous python 3.4 IDLE
Si vous utilisez MacOSX, appuyez sur control p
pour monter et control n
pour descendre. J'utilise IDLE Python 3.4.1 Shell.
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.