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

Как я могу повторить последнюю команду? Обычные клавиши: Вверх, Ctrl + Вверх, 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
>>> 

Ответ 1

Я использую следующее, чтобы включить историю в оболочке 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.

Требуемые модули:

Ответ 2

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

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

Ответ 3

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

Это настройка по умолчанию, и вы можете изменить эти ключевые ярлыки по своему усмотрению в настройках → Настройка IDLE.

Ответ 4

Вы не указали, какой интерпретатор. Предполагая, что вы используете 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.

Ответ 5

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

Ответ 6

По умолчанию используйте ALT + p для предыдущей команды, вы можете перейти на стрелку вверх, а не в IDLE GUi → OPtions → Configure IDLE → Key → Custom Key Binding Не нужно запускать пользовательский script, кроме того, модуль readlines не запускается в Windows. Надеюсь, что поможет.:)

Ответ 7

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

Ответ 8

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

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

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

sudo apt-get install libncurses-dev libreadline-dev

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

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

Ответ 9

В моем mac os python3 вы можете использовать: control + p ранняя команда contrlo + n следующая команда

Ответ 10

alt+p  
go into options tab
configure idle
Keys

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

Ответ 11

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

pip install py-readline

sudo port устанавливает py-readline (на Mac)

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

Ответ 12

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

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

Ответ 13

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

yum install readline-devel

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

В OpenSUSE я исправляю это с помощью

pip3 install readline

Ссылаясь на этот ответ: fooobar.com/questions/61831/.... Возможно, "pip3 install readline" является общим решением. Не пробовал мой CentOS.

Ответ 14

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

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

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

источник

Ответ 15

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

ipython manage.py shell

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

Ответ 16

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

Try:

import readline

Ответ 17

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

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

Ответ 18

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

conda install ncurses

После завершения вкладки ncurses install, истории и навигации по левым и правым стрелкам в интерактивной оболочке.

Ответ 19

Если вы используете 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/240

[3] fooobar.com/questions/61831/...

Ответ 20

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

Ответ 21

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

Ответ 22

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

Ответ 23

На Mac с Python 2.x

➜ ~ brew install rlwrap

Начать с rlwrap

➜ ~ rlwrap python

Ответ 24

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

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

Ответ 25

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

sudo apt-get install libncurses-dev libreadline-dev

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