Jak powtórzyć ostatnie polecenie w powłoce interpretera Pythona?

Jak powtórzyć ostatnie polecenie? Zwykłe klawisze: Up, Ctrl + Up, Alt-p nie działają. Produkują bezsensowne charaktery.

(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
>>> 
Author: vahid-dan, 2010-11-27

25 answers

Używam poniższego, aby włączyć historię w powłoce Pythona.

To jest moje .pythonstartup plik . Zmienna środowiskowa PYTHONSTARTUP jest ustawiona na tę ścieżkę do pliku.

# 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

Będziesz musiał mieć moduł readline, rlcommeter aby to włączyć.

Sprawdź informacje na ten temat pod adresem: http://docs.python.org/using/cmdline.html#envvar-PYTHONSTARTUP .

Moduły "required": {]}

  1. http://docs.python.org/library/readline.html
  2. http://docs.python.org/library/rlcompleter.html
 46
Author: pyfunc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-27 03:41:18

W trybie bezczynności przejdź do opcji - > Configure IDLE - > Keys i tam wybierz history-next, a następnie history-previous, aby zmienić klucze.

Następnie kliknij Pobierz nowe klucze do wyboru i jesteś gotowy, aby wybrać dowolną kombinację klawiszy, którą chcesz.

 134
Author: basak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-16 21:44:00

Alt + p dla poprzedniego polecenia z histroy, Alt + n dla następnego polecenia z historii.

Jest to domyślna konfiguracja i możesz zmienić ten skrót klawiszowy według własnego uznania z opcji - > Konfiguracja bezczynności.

 40
Author: frank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-23 01:24:13

Nie sprecyzowałeś, który interpreter. Zakładając, że używasz bezczynności.

Z bezczynnej dokumentacji: Historia poleceń:

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
Author: Info5ek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-09 15:51:04

Ctrl + p jest normalną alternatywą dla strzałki w górę. Upewnij się, że masz włączoną gnu readline w swojej kompilacji Pythona.

 7
Author: nmichaels,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-27 03:26:56

Domyślnie użyj ALT+p dla poprzedniego polecenia, możesz zmienić na strzałkę w górę w bezczynnym GUi > > Opcje > > Konfiguracja bezczynności > > klawisz > > niestandardowe Wiązanie klawiszy Nie jest konieczne uruchamianie niestandardowego skryptu, poza tym moduł readlines nie działa w systemie Windows. Mam Nadzieję, Że To Pomoże. :)

 6
Author: jocmtb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-04 20:54:12

ALT + p działa mi na Enthought Pythona w Windows.

 5
Author: Deniss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-03 03:28:56

Na Ubuntu Server 12.04 miałem ten problem po zainstalowaniu wersji Pythona ze źródła (Python3.4).

Niektóre z komentarzy tutaj zalecają instalację Ipythona i chcę wspomnieć, że mam takie samo zachowanie nawet z Ipythonem. Z tego co wiem, to jest problem readline.

[[3]} Dla Ubuntu 12.04 server, musiałem zainstalować libncurses-dev i libreadline-dev, a następnie zainstalować Pythona ze źródła, aby włączyć zachowanie up-history (readline). W sumie tak. to:
sudo apt-get install libncurses-dev libreadline-dev

Potem usunąłem wcześniej zainstalowany Python (nie PYTHON systemowy, ten, który zainstalowałem ze źródła!) i ponownie zainstalować go ze źródła i wszystko działało zgodnie z oczekiwaniami.

Nie musiałem nic instalować z pip lub edit .pythonstartup.

 5
Author: erewok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-10 04:00:34

W moim mac os python3 możesz użyć: control + P early command contrlo + N Następna Komenda

 3
Author: gkgy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-21 13:15:04
alt+p  
go into options tab
configure idle
Keys

Zajrzyj pod history-previous, aby znaleźć polecenie, możesz zmienić je na coś, co ci się bardziej podoba.

 2
Author: LakeEffect,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-12 01:39:53

Nie rozumiem, dlaczego jest tak wiele długich wyjaśnień na ten temat. Wystarczy zainstalować pakiet pyreadline z:

pip install py-readline
[[1]}Sudo port install py-readline (on Mac)

(zakładając, że masz już zainstalowany PIP .)

 2
Author: not2qubit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-21 01:07:53

Nie potrzebujesz niestandardowego skryptu, takiego jak pyfunc answer dla OSX (przynajmniej na mavericks). W trybie bezczynności kliknij bezczynność -> Preferencje- > klawisze, znajdź "History-next" i "history-previous" i pozostaw im domyślny skrót klawiaturowy lub przypisz "strzałkę w górę" i "strzałkę w dół" według typowego oczekiwanego zachowania terminala.

To jest na Idle 2.7 na OSX Mavericks.

 2
Author: AllTradesJack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-01 09:29:18

Na CentOS, naprawiam to przez

yum install readline-devel

A następnie przekompilować Pythona 3.4.

Na OpenSUSE poprawiam to przez

pip3 install readline

Odnoszę się do tej odpowiedzi: https://stackoverflow.com/a/26356378/2817654 . Być może "pip3 install readline" jest ogólnym rozwiązaniem. Nie przymierzałam moich CentOS.

 2
Author: peter pan gz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:24

Znajduję informacje, które skopiowałem poniżej odpowiedz na pytanie

Dostosuj się do trybu bezczynności: zamiast naciskać strzałkę w górę, aby przywrócić poprzednie polecenie, jeśli po prostu umieścisz kursor na poprzednim poleceniu, które chcesz powtórzyć, a następnie naciśniesz "enter", polecenie to zostanie powtórzone w bieżącym wierszu polecenia. Naciśnij enter ponownie, a polecenie zostanie wykonane.

Wymuś IDLE, aby dostosować się do ciebie: jeśli nalegasz na tworzenie klawiszy strzałek w wierszu polecenia IDLE okno działa jak w każdym wierszu polecenia, możesz to zrobić. Przejdź do menu "Opcje", Wybierz "Configure IDLE", a następnie "Keys". Zmiana klawisza związanego z akcjami "poprzednie polecenie" i "następne polecenie" na odpowiednio strzałkę w górę i strzałkę w dół.

Źródło

 2
Author: koliyat9811,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-31 12:23:06

Ipython nie zawsze jest drogą... Bardzo mi się podoba, ale jeśli spróbujesz uruchomić Django shell z ipythonem. Coś w stylu> > >

ipython manage.py shell

Działa poprawnie, jeśli używasz virtualenv. Django potrzebuje specjalnych dodatków, których nie ma, jeśli uruchomisz ipython, ponieważ uruchamia domyślny python systemowy, ale nie taki wirtualny.

 1
Author: Jazzuell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-10 12:36:05

Może się to zdarzyć, gdy uruchomisz python script.py vs po prostu python, aby wejść do interaktywnej powłoki, między innymi z powodu wyłączenia readline.

Try:

import readline
 1
Author: Anuj Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-03 18:53:50

Strzałka w górę działa tylko w wierszu poleceń Pythona.

W IDLE (Python GUI) domyślne wartości to: Alt-p: pobiera poprzednie polecenie pasujące do wpisanego. Alt-n: pobiera następny... Na przykład w Pythonie 2.7.9 możesz zobaczyć / zmienić klawisze akcji wybierając: Options - > Configure IDLE - > (Tab) Keys

 1
Author: teo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-11 17:23:36

Dla anaconda dla Pythona 3.5, musiałem zainstalować ncurses

conda install ncurses

Po zakończeniu zakładki ncurses Install, historia i poruszanie się po lewej i prawej strzałce działały w interaktywnej powłoce.

 1
Author: Danny Sullivan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-23 07:47:56

Jeśli używasz Debian Jessie uruchom to, aby naprawić instalację systemu 2.7.9

sudo apt-get install libncurses5-dev libncursesw5-dev

Aby naprawić moją drugą instalację 3.5.2 którą zainstalowałem z pyenv :

pip install readline

Źródła:

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

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

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

 1
Author: aliopi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-11 17:24:58

Strzałka w górę też mi działa. I nie sądzę, że trzeba zainstalować moduł Readline dla Pythona wbudowany wiersz poleceń. Powinieneś spróbować sprawdzić Ipython. A może to problem z mapą klawiatury.

 0
Author: wliao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-27 03:14:15

Jeśli używasz MacOSX, naciśnij control p, aby przełączać w górę i control n, aby przełączać w dół. Używam bezczynnej powłoki Pythona 3.4.1.

 0
Author: warship,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-11 04:23:52

Jest to control + p W Mac os w Pythonie 3.4 IDEL

 0
Author: ratzily,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-30 18:21:38

Na Macu z Pythonem 2.x

➜ ~ brew install rlwrap

Zacznij od rlwrap

➜ ~ rlwrap python

 0
Author: northtree,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-20 00:58:22

Za pomocą klawiszy strzałek, aby przejść do początku polecenia i naciśnięcie enter kopiuje go jako bieżące polecenie.

Następnie naciśnij enter, aby uruchomić go ponownie.

 0
Author: Raja Dorji,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-24 14:59:16

Na Ubuntu 16.04 miałem ten sam problem po aktualizacji Pythona z wstępnie załadowanego 3.5 do wersji 3.7 z kodu źródłowego . Jak zasugerował @erewok, zrobiłem

sudo apt-get install libncurses-dev libreadline-dev

Po którym następuje: sudo make install Po tym, strzałka w górę klawisz działał. Nie wiem, który moduł jest wymagany do rozwiązania problemu lub obu tych problemów, ale bez "make install" żaden nie zadziała. Podczas początkowego tworzenia, było kilka błędów czerwonych flag, ale zignorowano i ukończono kompilację. Tym razem nie było żadnych błędów.

 0
Author: Leon Chang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-25 02:52:59