Как повторить последнюю команду в оболочке интерпретатора 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
>>>
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.
модули требуется:
в режиме ожидания перейдите в раздел Параметры - > настройка режима ожидания - > ключи и выберите история-далее, а затем история-предыдущая, чтобы изменить ключи.
затем нажмите на Получить новые ключи для выбора, и вы готовы выбрать любую комбинацию клавиш, которую вы хотите.
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. Надеюсь, Что Поможет. :)
на 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-readlinesudo 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 мне нужно было установить
ncursesconda install ncursesпосле
ncursesвкладка установка завершена, история и навигация с помощью стрелок влево и вправо работали в интерактивной оболочке.
если вы используете Debian Jessie запустите это, чтобы исправить установку системы
2.7.9sudo 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/
стрелка вверх работает и для меня. И я не думаю, что вам нужно установить модуль Readline для python builtin commandline. Вы должны попробовать Ipython, чтобы проверить. Или, может быть, это проблема вашей карты клавиатуры.
при использовании MacOSX нажмите
control pв цикле иcontrol nцикл вниз. Я использую IDLE Python 3.4.1 Shell.
с помощью клавиш со стрелками, чтобы перейти к началу команды и нажав 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