Jak powtórzyć ostatnie polecenie? Zwykłe klawisze: Up, Ctrl + Up, Alt-p nie działają. Tworzą bezsensowne postacie.
(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
>>>
python
shell
virtualenv
interpreter
python-idle
kakarukeys
źródło
źródło
libncurses-dev
libreadline-dev
a następnieconfigure-make-install
Python i po tym zadziałało. Dodano jako odpowiedź ...Odpowiedzi:
Używam poniższego, aby włączyć historię w powłoce Pythona.
To jest mój plik .pythonstartup . Zmienna środowiskowa PYTHONSTARTUP jest ustawiona na tę ścieżkę 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ły readline, rlcompleter, aby to włączyć.
Wymagane moduły:
źródło
W IDLE przejdź do Options -> 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 możesz wybrać dowolną kombinację klawiszy.
źródło
Alt + p dla poprzedniego polecenia z histroy, Alt + n dla następnego polecenia z historii.
To jest domyślna konfiguracja i możesz zmienić te skróty klawiszowe według własnych preferencji w Opcje -> Konfiguruj IDLE.
źródło
Nie określiłeś środowiska. Zakładając, że używasz IDLE.
Z dokumentacji IDLE: 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.
źródło
ALT + p działa dla mnie na Enthought Python w systemie Windows.
źródło
Ctrl + p to normalna alternatywa dla strzałki w górę. Upewnij się, że masz włączone readline gnu w kompilacji Pythona.
źródło
Na Ubuntu Server 12.04 miałem ten problem po zainstalowaniu wersji Pythona ze źródła (Python3.4).
Niektóre komentarze tutaj zalecają instalację Ipythona i chcę wspomnieć, że mam takie samo zachowanie nawet z Ipythonem. Z tego, co wiem, jest to problem readline.
W przypadku serwera Ubuntu 12.04 musiałem zainstalować,
libncurses-dev
alibreadline-dev
następnie zainstalować Python ze źródła, aby włączyć zachowanie up-history (readline). Zrobiłem to prawie:sudo apt-get install libncurses-dev libreadline-dev
Następnie usunąłem poprzednio zainstalowany Python (NIE PYTHON SYSTEMOWY, ten, który zainstalowałem ze źródła!) I ponownie zainstalowałem go ze źródła i wszystko działało zgodnie z oczekiwaniami.
Nie musiałem niczego instalować za pomocą pip lub edit .pythonstartup.
źródło
3.4.0
do3.4.2
.sudo pip install readline
aby to działało (python 2.7.11)sudo apt-get install libncurses-dev libncurses-dev:i386 libreadline-dev libreadline-dev:i386
i ponownie zainstalowałem Python zbudowany na źródłach.Domyślnie użyj ALT + p dla poprzedniego polecenia, zamiast tego możesz zmienić na strzałkę w górę w IDLE GUi >> OPcje >> Konfiguruj IDLE >> Klucz >> Niestandardowe powiązanie klawiszy Nie jest konieczne uruchamianie własnego skryptu, poza tym moduł readlines nie robi uruchomić w systemie Windows. Mam nadzieję, że to pomoże. :)
źródło
W CentOS naprawiam to przez
yum install readline-devel
a następnie ponownie skompiluj Pythona 3.4.
W OpenSUSE naprawiam to przez
pip3 install readline
Nawiązując do tej odpowiedzi: https://stackoverflow.com/a/26356378/2817654 . Być może „pip3 install readline” jest rozwiązaniem ogólnym. Nie próbowałem na moim CentOS.
źródło
W moim Mac OS Python3 możesz użyć: control + p early command contrlo + n next command
źródło
Znajduję informacje, które skopiowałem poniżej, odpowiadają na pytanie
źródło
źródło
alt+p go into options tab configure idle Keys
poszukaj
history-previous
polecenia, możesz go kiedyś zmienić na coś, co lubisz bardziej.źródło
Nie rozumiem, dlaczego istnieje tak wiele długich wyjaśnień na ten temat. Wszystko, co musisz zrobić, to zainstalować pakiet pyreadline zawierający:
pip install py-readline
sudo port install py-readline (na Macu)
(Zakładając, że masz już zainstalowany PIP .)
źródło
pip2
lubpip3
, w zależności od zainstalowanej wersji.Nie potrzebujesz niestandardowego skryptu, takiego jak odpowiedź pyfunc na OSX (przynajmniej na mavericks). W trybie bezczynności kliknij Idle -> Preferences -> Keys, znajdź „history-next” i „history-previous” i albo pozostaw je z domyślnym skrótem klawiaturowym, albo przypisz „strzałkę w górę” i „strzałkę w dół” zgodnie z typowym oczekiwanym zachowaniem terminala .
To jest na Idle 2.7 na OSX Mavericks.
źródło
Jeśli używasz Debiana Jessie, uruchom to, aby naprawić instalację systemu
2.7.9
sudo apt-get install libncurses5-dev libncursesw5-dev
Aby naprawić moją drugą
3.5.2
instalację, 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
źródło
pip install readline
Użycie klawiszy strzałek do przejścia na początek polecenia i naciśnięcie klawisza Enter kopiuje je jako bieżące polecenie.
Następnie naciśnij Enter, aby uruchomić go ponownie.
źródło
Ipython nie zawsze jest dobry ... Bardzo mi się podoba, ale jeśli spróbujesz uruchomić powłokę Django z ipythonem. Coś jak >>>
ipython manage.py shell
nie działa poprawnie, jeśli używasz virtualenv. Django potrzebuje specjalnych dołączeń, których nie ma, jeśli uruchamiasz ipython, ponieważ uruchamia domyślny systemowy Python, ale nie wirtualny.
źródło
Może się to zdarzyć, gdy uruchamiasz
python script.py
zamiast tylkopython
wejść do powłoki interaktywnej, między innymi z powodu wyłączenia readline.Próbować:
import readline
źródło
Strzałka w górę działa tylko w wierszu poleceń Pythona.
W IDLE (Python GUI) wartościami domyślnymi są: Alt-p: pobiera poprzednie polecenie pasujące do tego, co wpisałeś. Alt-n: pobiera następny ... Na przykład w Pythonie 2.7.9 możesz zobaczyć / zmienić klawisze akcji wybierając: Opcje -> Konfiguruj IDLE -> (Tab) Klawisze
źródło
W przypadku anacondy dla Pythona 3.5 musiałem zainstalować
ncurses
conda install ncurses
Po zakończeniu
ncurses
zakładki instalacji, historia i nawigacja za pomocą strzałek w lewo i w prawo działały w powłoce interaktywnej.źródło
Na Macu z Pythonem 2.x
➜ ~ brew install rlwrap
Zacznij od rlwrap
➜ ~ rlwrap python
źródło
Aby powtórzyć ostatnie polecenie w Pythonie, możesz użyć
<Alt + n>
w systemie Windowsźródło
U mnie też działa strzałka w górę. I nie sądzę, abyś musiał instalować moduł Readline dla wbudowanej linii poleceń Pythona. Powinieneś spróbować Ipythona, żeby to sprawdzić. A może jest to problem z twoją mapą klawiatury.
źródło
Jeśli używasz MacOSX, naciskaj,
control p
aby przewijać w górę iwcontrol n
dół. Używam powłoki IDLE Python 3.4.1.źródło
to jest control + p w Mac OS w pythonie 3.4 IDEL
źródło
Na Ubuntu 16.04 miałem ten sam problem po uaktualnieniu Pythona z preinstalowanego 3.5 do wersji 3.7 z kodu źródłowego . Jak zasugerował @erewok, zrobiłem
sudo apt-get install libncurses-dev libreadline-dev
a następnie:
sudo make install
Następnie działał klawisz strzałki w górę. Nie jestem pewien, który moduł jest wymagany do rozwiązania problemu lub oba, ale bez polecenia „make install” żaden nie zadziała. Podczas początkowego tworzenia wystąpiły pewne błędy ostrzegawcze, ale zignorowano i ukończono kompilację. Tym razem nie było żadnych błędów.źródło