파이썬 인터프리터 쉘에서 마지막 명령을 반복하는 방법은 무엇입니까?


134

마지막 명령을 어떻게 반복합니까? 일반적인 키 : 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
>>> 

위쪽 화살표가 제대로 작동합니다 (우분투). 이상합니다.
Vincent Savard

3
Ditto, 위쪽 화살표는 Windows에서 작동합니다. 어떤 쉘을 사용하고 있으며 어떤 OS에서 어떤 터미널 프로그램을 사용하고 있습니까?
fmark

Fedora 13에 별도의 python 2.6.6 설치를 설치하고 gnome-terminal에서 기본 python 셸을 사용하여 virtualenv를 실행
kakarukeys

5
참고로, 이러한 "무의미한"문자는 DEC에 의해 개발 된 "이스케이프 시퀀스"이며 전화선을 통해 터미널에서 메인 프레임 컴퓨터에 액세스 한 시절에 다시 등장했습니다. ^ [는 ESC (이스케이프)이고 ^ [[는 이스케이프-[또는 CSI (제어 시퀀스 이니시에이터, IIRC)이고 CSI-A는 "위"에 대한 시퀀스입니다. ncurses를 활성화하면 아래 답변을 사용하여 해당 시퀀스가 ​​표시되지 않고 해석됩니다.
jcomeau_ictx

4
소스 (Python3.4)에서 Python 버전을 설치했기 때문에이 문제가 발생했습니다. 아래 의견 중 일부는 Ipython 설치를 권장하며 Ipython에서도 동일한 동작을한다고 언급하고 싶습니다. Ubuntu 12.04 서버의 libncurses-dev libreadline-dev경우 configure-make-installPython 을 설치 한 다음 Python을 사용해야했습니다. 답변으로 추가 ...
erewok

답변:


60

파이썬 쉘에서 히스토리를 활성화하려면 다음을 사용하십시오.

이것은 내 .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

@ user496852 : env 변수 PYTHONSTARTUP을 위 코드가 포함 된 파일 경로로 설정하십시오. 필요한 모듈이 있는지 확인하십시오.
pyfunc

6
필요하지 않습니다, 그냥 basak의 답변의 지시를 따르고 키 바인딩을 할당
Timofey

1
과잉. 그냥 Alt + P를
user32882

164

IDLE에서 옵션-> IDLE 구성-> 키로 이동하여 history-next를 선택한 다음 history-previous를 선택하여 키를 변경하십시오.

그런 다음 선택을 위해 새 키 가져 오기를 클릭하면 원하는 키 조합을 선택할 수 있습니다.


4
검색 자의 경우 Linux Mint 17 Cinnamon에서도 작동합니다.
user1063287

4
Windows 10, Python 3.6.1에서도 작동합니다. 고마워요, 이것은 깨끗하고 명확합니다. 새로운 학습자에게 유용합니다.
jyao

1
가장 적절한 답변. 올바른 것으로 선택해야합니다.
Davidson Lima

옵션이 없습니다-> Python 2.7 용 IDLE 구성 : /
DaniPaniz

내가 설정 / 환경 설정 (파이썬 2.7, Mac 용 IDLE)에 갈 필요가 내가 : 역사 - 다음, 덕분에 너무 많은 당신이 최고입니다이 발견
DaniPaniz

48

histroy의 이전 명령에 대해서는 Alt + p, 히스토리에서 다음 명령에 대해서는 Alt + n.

이것이 기본 구성이며 옵션-> 유휴 구성에서 원하는대로이 키 바로 가기를 변경할 수 있습니다.


2
그것은 history-next / history-previous라고 불린다
DaniPaniz

17

어떤 환경을 지정하지 않았습니다. 유휴를 사용한다고 가정합니다.

유휴 설명서에서 : 명령 기록 :

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.


1
이것이 유휴에서 찾고있는 솔루션입니다. 위쪽 화살표는 bash 쉘에서 시작된 파이썬 인터프리터에서 작동했습니다.
John Doe

8

ALT + p는 Windows의 Enthought Python에서 작동합니다.


7

위쪽 화살표의 일반적인 대안은 Ctrl + p입니다. 파이썬 빌드에서 gnu readline이 활성화되어 있는지 확인하십시오.


1
이것은 내가 인쇄 할 경우 요청
ashleedawg

7

Ubuntu Server 12.04에서 소스 (Python3.4)에서 Python 버전을 설치 한 후이 문제가 발생했습니다.

여기에있는 의견 중 일부는 Ipython 설치를 권장하며 Ipython에서도 동일한 동작을한다고 언급하고 싶습니다. 내가 알 수있는 것은 readline 문제입니다.

우분투 12.04 서버의 경우, 내가 설치했다 libncurses-devlibreadline-dev다음 활성화까지 - 역사 (readline에) 행동 소스에서 Python을 설치합니다. 나는 이것을 거의했다 :

sudo apt-get install libncurses-dev libreadline-dev

그 후, 이전에 설치된 Python (NO. THE SYSTEM PYTHON, 내가 소스에서 설치 한 것!)을 삭제하고 소스에서 다시 설치하면 모든 것이 예상대로 작동했습니다.

pip로 아무것도 설치하거나 .pythonstartup을 편집 할 필요가 없었습니다.


2
이 문제가 발생 누군가를 위해, 나는 14.04 오전 여전히에서가이 문제를 해결하기 위해이 솔루션을 사용할 수있었습니다 3.4.0을을 3.4.2.
ctzdev

2
내가 할 필요가 sudo pip install readline작업에 (파이썬 2.7.11)을 얻기 위해이 후
롭 와트

1
이것은 64 비트 Ubuntu 16에서도 효과적이었습니다. 이미 적절하게 설치된 64 비트 Python 외에도 소스에서 컴파일 및 설치 된 32 비트 Python 3.5.2가 있습니다. sudo apt-get install libncurses-dev libncurses-dev:i386 libreadline-dev libreadline-dev:i386소스 빌드 Python을 방금 다시 설치했습니다.
Alex Che

7

기본적으로 이전 명령에 ALT + p를 사용하면 IDLE GUi >> OPTIONs >> IDLE 구성 >> Key >> Custom Key Binding에서 Up-Arrow를 대신 변경할 수 있습니다. readlines 모듈이 아닌 Windows에서 실행하십시오. 도움을 바랍니다. :)


3

CentOS에서는 다음과 같이 수정했습니다.

yum install readline-devel

그런 다음 파이썬 3.4를 다시 컴파일하십시오.

OpenSUSE에서이 문제를 해결했습니다.

pip3 install readline

이 답변을 참조 하십시오 : https://stackoverflow.com/a/26356378/2817654 . 아마도 "pip3 install readline"이 일반적인 해결책 일 것입니다. CentOS에서 시도하지 않았습니다.


3

내 Mac OS python3에서는 다음을 사용할 수 있습니다 : control + p early command contrlo + n next command


3

아래에서 복사 한 정보가 질문에 대한 답변입니다.

유휴 상태에 적응 : 이전 명령을 다시 가져 오기 위해 위쪽 화살표를 누르는 대신 반복하려는 이전 명령에 커서를 놓고 "enter"를 누르면 해당 명령이 현재 명령 프롬프트에서 반복됩니다. Enter 키를 다시 누르면 명령이 실행됩니다.

IDLE이 자신에게 적응하도록 강제 : IDLE 명령 프롬프트 창의 화살표 키를 다른 모든 명령 프롬프트의 화살표 키와 동일하게 작동하도록하려면이 작업을 수행 할 수 있습니다. "옵션"메뉴로 이동하여 "유휴 구성"을 선택한 다음 "키"를 선택하십시오. "이전 명령"및 "다음 명령"조치와 연관된 키를 각각 위쪽 화살표 및 아래쪽 화살표로 변경하십시오.

출처


2
alt+p  
go into options tab
configure idle
Keys

history-previous명령을 찾으면 여기에서 한 번 더 좋아하는 것으로 변경할 수 있습니다.


2

왜 이것에 대해 너무 많은 설명이 있는지 이해가되지 않습니다. 다음 과 같이 pyreadline 패키지를 설치하기 만하면 됩니다.

pip install py-readline

sudo 포트 설치 py-readline (Mac)

( PIP를 이미 설치했다고 가정합니다 .)


2
'pip install readline'이 저에게 효과적이었습니다. 내 모든 제어 시퀀스는 파이썬 3.4 이후를 CentOS 7 브래킷 접두사 나오고 있었다 수동 설치
저 친구 Eunicien

"py-readline 요구 사항을 충족하는 버전을 찾을 수 없습니다 (버전에서) : py-readline에 대해 일치하는 배포를 찾을 수 없습니다"이 세상이 싫습니다
DaniPaniz

당신이 사용 확인 pip2또는 pip3설치 한 버전에 따라.
not2qubit

2

OSX에 대한 pyfunc의 답변 (최소한 매버릭스)과 같은 사용자 정의 스크립트가 필요하지 않습니다. 유휴 상태에서 유휴-> 환경 설정-> 키를 클릭하고 "내역 다음"및 "내역 이전"을 찾은 다음 기본 키보드 단축키로 그대로 두거나 일반적인 예상 터미널 동작에 따라 "위쪽 화살표"및 "아래쪽 화살표"를 할당하십시오. .

이것은 OSX Mavericks의 유휴 2.7에 있습니다.


2

데비안 Jessie를 사용하는 경우 시스템 설치를 수정하기 위해 이것을 실행하십시오 2.7.9

sudo apt-get install libncurses5-dev libncursesw5-dev

pyenv로3.5.2 설치 한 다른 설치 를 수정하려면 다음을 수행하십시오 .

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


libncurses5-dev 및 libncursesw5-dev를 설치하면 Python 3.5 설치를 수정하기에 충분하지만, readline 모듈을 설치 한 후 Python 3.6이 중단되었습니다. 아마 다시 컴파일해야 할 것입니다.
Andriy Makukha

그것은 우분투 18.04 파이썬 버전 3.7.3 절 도와 줬어요pip install readline
akpp

2

화살표 키를 사용하여 명령 시작으로 이동하고 Enter 키를 누르면 현재 명령으로 복사됩니다.

그런 다음 Enter 키를 눌러 다시 실행하십시오.


1

Ipython은 항상 그렇지는 않습니다 ... 나는 그것을 아주 좋아하지만 ijangthon으로 Django shell을 실행하려고하면. >>>>와 같은 것

ipython manage.py shell

virtualenv를 사용하면 올바르게 작동하지 않습니다. 장고는 기본 시스템 파이썬을 시작하지만 가상은 아니기 때문에 ipython을 시작하면 존재하지 않는 특별한 포함이 필요합니다.


1

이것은 readline이 비활성화되는 다른 이유 중 대화식 셸을 입력하기 위해 python script.pyvs 를 실행할 때 발생할 수 있습니다 python.

시험:

import readline

1

위쪽 화살표는 Python 명령 행에서만 작동합니다.

IDLE (Python GUI)에서 기본값은 다음과 같습니다. Alt-p : 입력 한 내용과 일치하는 이전 명령을 검색합니다. Alt-n : 다음 검색 ... 예를 들어 Python 2.7.9에서는 동작 키 선택 / 옵션-> 유휴 구성-> (탭) 키를 보거나 변경할 수 있습니다.


1

python 3.5 용 아나콘다의 경우 설치해야했습니다. ncurses

conda install ncurses

ncurses설치 탭이 완료된 후, 왼쪽 및 오른쪽 화살표를 통한 히스토리 및 탐색은 대화식 쉘에서 작동했습니다.


1

Python 2.x가 설치된 Mac에서

➜ ~ brew install rlwrap

rlwrap으로 시작

➜ ~ rlwrap python


1

파이썬에서 마지막 명령을 반복하려면 <Alt + n>Windows에서 사용할 수 있습니다


0

위쪽 화살표도 저에게 효과적입니다. 그리고 파이썬 내장 명령 줄을 위해 Readline 모듈을 설치할 필요가 없다고 생각합니다. U는 Python을 확인해야합니다. 또는 키보드 맵의 문제 일 수 있습니다.


0

MacOSX를 사용하는 경우을 눌러 control p사이클을 올리거나 내 control n립니다. 유휴 Python 3.4.1 셸을 사용하고 있습니다.


0

파이썬 3.4 IDEL의 Mac OS에서 control + p입니다.


0

Ubuntu 16.04에서 Python을 사전로드 된 3.5 에서 소스 코드에서 버전 3.7로 업그레이드 한 후 동일한 문제가 발생했습니다 . @erewok이 제안한 것처럼

sudo apt-get install libncurses-dev libreadline-dev

sudo make install 후 : 화살표 키가 작동했습니다. 문제를 해결하는 데 어느 모듈이 필요한지 또는 둘 다 확실하지 않지만 "make install"이 없으면 아무 것도 작동하지 않습니다. 초기 제작 과정에서 일부 빨간색 플래그 오류가 발생했지만 빌드를 무시하고 완료했습니다. 이번에는 오류가 없었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.