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



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



(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
>>>
1210   25  

25 ответов:

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

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

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

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

это настройка по умолчанию, и вы можете изменить эти сочетания клавиш по своему усмотрению из Options -> Configure 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.

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

по умолчанию используется сочетание клавиш Alt+P для предыдущей команды, вы можете изменить стрелку, направленную вверх, а не в холостую Гуй >> параметры >> настройки простоя >>ключ >>пользовательские привязки клавиш Нет необходимости запускать пользовательский скрипт, кроме того, модуль readlines не работает в Windows. Надеюсь, Что Поможет. :)

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

на Ubuntu Server 12.04, у меня была эта проблема после установки версии Python из источника (Python3.4).

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

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

sudo apt-get install libncurses-dev libreadline-dev

после этого я удалил ранее установленный Python (не системный PYTHON, тот, который я установил из источника!) и переустановил его из источника, и все работало так, как ожидалось.

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

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

alt+p  
go into options tab
configure idle
Keys

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

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

pip install py-readline

sudo port install py-readline (на Mac)

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

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

Это на холостом ходу 2.7 на OSX Mavericks.

на CentOS, я исправляю это с помощью

yum install readline-devel

а затем перекомпилировать python 3.4.

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

pip3 install readline

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

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

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

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

источник

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

ipython manage.py shell

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

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

попробуй:

import readline

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

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

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

conda install ncurses

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

если вы используете 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] https://stackoverflow.com/a/40229934/332788

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

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

Это control + p в Mac os в python 3.4 IDEL

на Mac с Python 2.x

➜ ~ brew install rlwrap

начните с rlwrap

➜ ~ rlwrap python

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

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

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

sudo apt-get install libncurses-dev libreadline-dev

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

Comments

    Ничего не найдено.