wake-up-neo.net

Wie wiederhole ich den letzten Befehl in der python interpreter shell?

Wie wiederhole ich den letzten Befehl? Die üblichen Tasten: Nach oben, Strg + Nach oben, Alt-P funktionieren nicht. Sie produzieren unsinnige Charaktere.

(ve)[[email protected] 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

Ich benutze das Folgende, um den Verlauf für python Shell zu aktivieren.

Dies ist meine .pythonstartup -Datei. Die Umgebungsvariable PYTHONSTARTUP ist auf diesen Dateipfad festgelegt.

# 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

Sie müssen die Module readline und rlcompleter haben, um dies zu ermöglichen.

Informationen hierzu finden Sie unter: http://docs.python.org/using/cmdline.html#envvar-PYTHONSTARTUP .

Erforderliche Module:

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

Gehen Sie in IDLE zu Options -> Configure IDLE -> Keys und wählen Sie dort history-next und dann history-previous, um die Schlüssel zu ändern.

Klicken Sie dann auf Neue Schlüssel zur Auswahl holen und Sie können die gewünschte Tastenkombination auswählen.

154
basak

Alt + P für den vorherigen Befehl aus dem Verlauf, Alt + N für den nächsten Befehl aus dem Verlauf.

Dies ist die Standardkonfiguration, und Sie können diese Tastenkombination nach Ihren Wünschen unter Optionen -> IDLE konfigurieren ändern.

45
frank

Sie haben nicht angegeben, welcher Dolmetscher. Angenommen, Sie verwenden IDLE.

Aus der IDLE-Dokumentation: Befehlsverlauf:

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

Standardmäßig verwenden Sie ALT + p für den vorherigen Befehl und können stattdessen in IDLE GUi >> OPtions >> Configure IDLE >> Key >> Custom Key Binding zu Up-Arrow wechseln. Es ist nicht erforderlich, ein benutzerdefiniertes Skript auszuführen, außer dass das readlines-Modul dies nicht tut laufen in Windows. Hoffe, dass Hilfe. :)

7
jocmtb

Strg + p ist die normale Alternative zum Aufwärtspfeil. Stellen Sie sicher, dass in Ihrem Python build gnu readline aktiviert ist.

7
nmichaels

Unter Ubuntu Server 12.04 hatte ich dieses Problem, nachdem ich eine Version von Python von der Quelle (Python3.4) installiert hatte.

In einigen Kommentaren wird die Installation von Ipython empfohlen, und ich möchte erwähnen, dass ich auch mit Ipython dasselbe Verhalten habe. Soweit ich weiß, handelt es sich um ein Readline-Problem.

Für den Ubuntu 12.04-Server musste ich libncurses-dev Und libreadline-dev Installieren und dann Python aus dem Quellcode) installieren, damit das Up-History-Verhalten (readline) aktiviert wurde ziemlich genau das getan:

Sudo apt-get install libncurses-dev libreadline-dev

Danach löschte ich das zuvor installierte Python (NOT THE SYSTEM PYTHON, das ich aus dem Quellcode installiert hatte!) Und installierte es aus dem Quellcode neu, und alles funktionierte wie erwartet.

Ich musste nichts mit pip installieren oder .pythonstartup bearbeiten.

7
erewok

ALT + p funktioniert bei Enthought Python in Windows.

6
Deniss

Auf CentOS behebe ich das durch

yum install readline-devel

und dann neu kompilieren python 3.4.

Unter OpenSUSE behebe ich das durch

pip3 install readline

Unter Bezugnahme auf diese Antwort: https://stackoverflow.com/a/26356378/2817654 . Vielleicht ist "pip3 install readline" eine allgemeine Lösung. Ich habe mein CentOS nicht ausprobiert.

3
peter pan gz

Ich finde Informationen, die ich unten kopiert habe, und beantworte die Frage

Passen Sie sich an IDLE an: Anstatt den Aufwärtspfeil zu drücken, um einen vorherigen Befehl wiederherzustellen, wird dieser Befehl bei der aktuellen Eingabeaufforderung wiederholt, wenn Sie den Cursor nur auf den vorherigen Befehl setzen, den Sie wiederholen möchten, und dann die Eingabetaste drücken. Drücken Sie erneut die Eingabetaste, und der Befehl wird ausgeführt.

IDLE zwingen, sich an Sie anzupassen: Wenn Sie darauf bestehen, dass die Pfeiltasten im Eingabeaufforderungsfenster des IDLE-Befehls wie in jeder anderen Eingabeaufforderung funktionieren, können Sie dies tun. Gehen Sie zum Menü "Optionen", wählen Sie "IDLE konfigurieren" und dann "Schlüssel". Ändern der Taste, die den Aktionen "Vorheriger Befehl" und "Nächster Befehl" zugeordnet ist, so dass sie der Aufwärtspfeil bzw. der Abwärtspfeil ist.

Quelle

3
koliyat9811

In meinem Mac OS Python3 können Sie verwenden: Control + P Early Command Control + und Next Command

3
gkgy

Wenn Sie mit den Pfeiltasten zum Start des Befehls gehen und die Eingabetaste drücken, wird der Befehl als aktueller Befehl kopiert.

Dann drücken Sie einfach die Eingabetaste, um es erneut auszuführen.

2
Raja Dorji

Sie benötigen kein benutzerdefiniertes Skript wie Pyfunks Antwort für OSX (zumindest bei Einzelgängern). Klicken Sie im Standby-Betrieb auf Standby -> Einstellungen -> Tasten, suchen Sie nach "Verlauf - Weiter" und "Verlauf - Zurück" und belassen Sie entweder die Standardtastenkombination oder weisen Sie "Aufwärtspfeil" und "Abwärtspfeil" gemäß dem typischen erwarteten Terminalverhalten zu .

Dies ist im Idle 2.7 unter OSX Mavericks.

2
AllTradesJack

Wenn Sie Debian Jessie verwenden, führen Sie dies aus, um Ihre Systeminstallation zu reparieren 2.7.9

Sudo apt-get install libncurses5-dev libncursesw5-dev

So reparieren Sie meine andere 3.5.2 - Installation, die ich mit pyenv installiert habe:

pip install readline

Quellen:

[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

schau unter history-previous für den Befehl können Sie ihn hier in etwas ändern, das Ihnen besser gefällt.

2
LakeEffect

Ich verstehe nicht, warum es dazu so viele lange Erklärungen gibt. Alles was Sie tun müssen, ist das pyreadline Paket zu installieren mit:

pip install py-readline

Sudo-Port py-readline installieren (auf Mac)

(Vorausgesetzt, Sie haben bereits installiert PIP .)

2
not2qubit

Für Anaconda für python 3.5 musste ich ncurses installieren

conda install ncurses

Nachdem die Registerkarte ncurses installiert wurde, funktionierten Verlauf und Navigation über die Pfeile nach links und rechts in der interaktiven Shell.

1
Danny Sullivan

Dies kann passieren, wenn Sie python script.py vs nur python, um die interaktive Shell aufzurufen, unter anderem, weil die Readline deaktiviert ist.

Versuchen:

import readline
1
Anuj Gupta

Der Aufwärtspfeil funktioniert nur in der Python Befehlszeile.

In IDLE (Python GUI) lauten die Standardeinstellungen: Alt-p: Ruft den vorherigen Befehl ab, der mit Ihrer Eingabe übereinstimmt. Alt-n: ruft als Nächstes auf ... In Python 2.7.9 können Sie beispielsweise die Aktionstasten anzeigen/ändern, indem Sie Folgendes auswählen: Optionen -> IDLE konfigurieren -> (Tab) -Tasten

1
teo

Auf einem Mac mit Python 2.x

➜ ~ brew install rlwrap

Beginnen Sie mit rlwrap

➜ ~ rlwrap python

1
northtree

Ipython ist nicht immer so ... Mir gefällt es ziemlich gut, aber wenn Sie versuchen, Django Shell mit ipython. So etwas wie >>>

ipython manage.py Shell

es funktioniert nicht richtig, wenn Sie virtualenv verwenden. Django benötigt einige spezielle Includes, die nicht vorhanden sind, wenn Sie ipython starten, da standardmäßig Systempython gestartet wird, aber nicht dieses virtuelle.

1
Jazzuell

Unter Ubuntu 16.04 hatte ich nach dem Upgrade von Python von der vorinstallierten Version 3.5 auf Version 3.7 aus dem Quellcode das gleiche Problem

Sudo apt-get install libncurses-dev libreadline-dev

gefolgt von: Sudo make install Danach funktionierte die Pfeiltaste nach oben. Sie sind sich nicht sicher, welches Modul zur Behebung des Problems erforderlich ist, aber ohne "make install" würde keines funktionieren. Während der ersten Erstellung traten einige Fehler auf, die jedoch ignoriert und die Erstellung abgeschlossen wurden. Dieses Mal schien es keine Fehler zu geben.

0
Leon Chang

es ist control + p in Mac os in python 3.4 IDLE

0
ratzily

Wenn Sie MacOSX verwenden, drücken Sie control p um hoch zu fahren und control n um runter zu fahren. Ich benutze IDLE Python 3.4.1 Shell.

0
warship

Der Aufwärtspfeil funktioniert auch bei mir. Und ich glaube nicht, dass Sie das Readline-Modul für python Builtin Commandline installieren müssen. Sie sollten versuchen, Ipython zu überprüfen. Oder vielleicht liegt es am Problem Ihrer Tastaturbelegung.

0
wliao