it-swarm.com.ru

Как повторить последнюю команду в интерпретаторе python?

Как мне повторить последнюю команду? Обычные клавиши: Up, Ctrl + Up, Alt-p не работают. Они производят бессмысленные символы.

(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
>>> 
114
kakarukeys

Я использую следующее для включения истории в оболочке python.

Это мой . Pythonstartup файл. Для переменной окружения PYTHONSTARTUP задан этот путь к файлу.

# 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

Для этого вам понадобятся модули readline, rlcompleter.

Проверьте информацию по этому адресу: http://docs.python.org/using/cmdline.html#envvar-PYTHONSTARTUP .

Необходимые модули:

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

В режиме IDLE перейдите в Options -> Configure IDLE -> Keys и там выберите history-next и затем history-previous, чтобы изменить ключи.

Затем нажмите "Получить новые ключи для выбора", и вы готовы выбрать любую комбинацию клавиш, которую хотите.

152
basak

Alt + p для предыдущей команды из истории, Alt + n для следующей команды из истории.

Это конфигурация по умолчанию, и вы можете изменить эти сочетания клавиш по своему усмотрению в Параметры -> Настроить IDLE.

44
frank

Вы не указали, какой именно переводчик. Предполагая, что вы используете IDLE.

Из документации IDLE: История команд:

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

Ctrl + p - нормальная альтернатива стрелке вверх. Убедитесь, что в вашей сборке Python включен gnu readline.

7
nmichaels

По умолчанию используйте ALT + p для предыдущей команды, вместо этого вы можете изменить на Стрелку вверх в IDLE GUi >> ОПЦИИ >> Настроить IDLE >> Ключ >> Привязка настраиваемой клавиши Не обязательно запускать пользовательский сценарий, кроме модуля readlines. запустить в винде. Надеюсь, что помощь. :)

6
jocmtb

ALT + p работает для меня на Enthought Python в Windows.

5
Deniss

На Ubuntu Server 12.04 у меня возникла эта проблема после установки версии Python из исходного кода (Python3.4).

Некоторые из комментариев здесь рекомендуют установить Ipython, и я хочу упомянуть, что у меня такое же поведение даже с Ipython. Из того, что я могу сказать, это проблема readline.

Для сервера Ubuntu 12.04 мне пришлось установить libncurses-dev и libreadline-dev, а затем установить Python из источника, чтобы было активировано поведение обновления истории (readline). Я в значительной степени сделал это:

Sudo apt-get install libncurses-dev libreadline-dev

После этого я удалил ранее установленный Python (НЕ СИСТЕМНЫЙ PYTHON, тот, который я установил из исходного кода!) И переустановил его из исходного кода, и все заработало, как и ожидалось.

Мне не нужно было ничего устанавливать с помощью pip или редактировать .pythonstartup.

5
erewok

На CentOS я исправляю это

yum install readline-devel

а затем перекомпилируйте python 3.4.

На OpenSUSE я исправляю это

pip3 install readline

Ссылка на этот ответ: https://stackoverflow.com/a/26356378/2817654 . Возможно, "pip3 install readline" является общим решением. Не пробовал на моем CentOS.

3
peter pan gz

В моем Mac OS Python 3 вы можете использовать: control + p ранняя команда control + и следующая команда

3
gkgy

Я нахожу информацию, которую я скопировал ниже ответить на вопрос

Приспособьте себя к IDLE: вместо нажатия стрелки вверх для возврата предыдущей команды, если вы просто наведите курсор на предыдущую команду, которую хотите повторить, и затем нажмете "enter", эта команда будет повторена в текущей командной строке. Нажмите ввод еще раз, и команда будет выполнена.

Заставьте IDLE адаптироваться к вам: если вы настаиваете на том, чтобы клавиши со стрелками в окне командной строки IDLE работали так же, как и в любой другой командной строке, вы можете сделать это. Перейдите в меню "Параметры", выберите "Настроить IDLE", а затем "Ключи". Изменение клавиши, связанной с действиями "предыдущая команда" и "следующая команда", на стрелку вверх и стрелку вниз соответственно.

источник

2
koliyat9811

Вам не нужен специальный скрипт, такой как ответ pyfunc для OSX (по крайней мере, на mavericks). В режиме ожидания щелкните Idle -> Preferences -> Keys, найдите "history-next" и "history-previous" и оставьте их с их сочетаниями клавиш по умолчанию или назначьте "стрелку вверх" и "стрелку вниз" для типичного ожидаемого поведения терминала ,.

Это на Idle 2.7 на OSX Mavericks.

2
AllTradesJack

Если вы используете Debian Jessie, запустите это, чтобы исправить вашу системную установку 2.7.9

Sudo apt-get install libncurses5-dev libncursesw5-dev

Чтобы исправить мою другую установку 3.5.2, которую я установил с pyenv :

pip install readline

Источники:

[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

ищите команду под history-previous, вы можете изменить ее на то, что вам больше нравится, когда-то здесь.

2
LakeEffect

Я не понимаю, почему так много длинных объяснений по этому поводу. Все, что вам нужно сделать, это установить пакет pyreadline с:

pip install py-readline

Порт Sudo установить py-readline (на Mac)

(Предполагая, что вы уже установили PIP .)

2
not2qubit

Для anaconda для python 3.5 мне нужно было установить ncurses

conda install ncurses

После завершения установки вкладки ncurses история и навигация с помощью стрелок влево и вправо работали в интерактивной оболочке.

1
Danny Sullivan

Использование клавиш со стрелками для перехода к началу команды и нажатие клавиши ввода копирует ее как текущую команду.

Затем просто нажмите Enter, чтобы запустить его снова.

1
Raja Dorji

Это может произойти, когда вы запускаете python script.py против просто python для входа в интерактивную оболочку, среди других причин отключения readline.

Пытаться:

import readline
1
Anuj Gupta

Стрелка вверх работает только в командной строке Python.

В IDLE (Python GUI) значения по умолчанию: Alt-p: возвращает предыдущую команду, соответствующую введенному вами. Alt-n: извлекает следующее ... Например, в Python 2.7.9 вы можете увидеть/изменить ключи действий, выбрав: Параметры -> Настроить IDLE -> Клавиши (вкладка)

1
teo

На Mac с Python 2.x

➜ ~ brew install rlwrap

Начать с rlwrap

➜ ~ rlwrap python

1
northtree

Ipython не всегда так ... Мне это нравится, но если вы попытаетесь запустить Django Shell с ipython. Что-то вроде >>>

ipython manage.py Shell

это не работает правильно, если вы используете virtualenv. Django нужны специальные включения, которых нет, если вы запустите ipython, потому что он запускает системный python по умолчанию, но не этот виртуальный.

1
Jazzuell

В Ubuntu 16.04 у меня возникла та же проблема после обновления Python с предустановленной версии 3.5 до версия 3.7 из исходного кода . Как подсказал @erewok, я сделал

Sudo apt-get install libncurses-dev libreadline-dev

затем: Sudo make install После этого сработала клавиша со стрелкой вверх. Не уверен, какой модуль необходим для решения проблемы или оба, но без "make install", ни один не будет работать. Во время начальной сборки были некоторые ошибки красного флага, но они игнорировались и завершили сборку. На этот раз, похоже, не было никаких ошибок.

0
Leon Chang

это управление + p в Mac OS в python 3.4 IDEL

0
ratzily

При использовании MacOSX нажмите control p для циклического перехода вверх и control n для циклического выключения. Я использую IDLE Python 3.4.1 Shell.

0
warship

У меня тоже работает стрелка вверх. И я не думаю, что вам нужно устанавливать модуль Readline для встроенной командной строки python. Вы должны попробовать Ipython, чтобы проверить. Или, может быть, это проблема вашей карты ключей.

0
wliao