python 쉘에서 화살표 키를 누르면 이스케이프 문자가 표시됩니다.
대화형 python 쉘과 같은 셸에서는 일반적으로 화살표 키를 사용하여 현재 줄에서 이동하거나 이전 명령어(화살표 포함)를 얻을 수 있습니다.
다른 한 후python
거기서 저는 다음과 같은 세션을 받습니다.
>>> import os
>>> ^[[A
마지막 문자가 화살표에서 나옵니다.또는 화살표-왼쪽을 사용하여 다음을 수행합니다.
>>> impor^[[D
어떻게 하면 고칠 수 있을까요?
통상의 배시에서는, 화살표 키가 올바르게 동작합니다.이 이상한 동작은 인터랙티브한 python(또는 perl 등) 셸에서만 발생합니다.
readline
★★★★★★★★★★★★★★★★★★:
pip install readline
OS X에서는 다른 문제가 발생.
시스템 python 쉘을 사용하면 키는 문제가 없지만 virtualenv에서는 문제가 있습니다.virtualenv/readline 재설치/업그레이드를 시도했지만 수정은 이루어지지 않았습니다.
가 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.import readline
문제가 있는 python 쉘에서 다음 오류 메시지가 나타납니다.
ImportError: dlopen(/Users/raptor/.virtualenvs/bottle/lib/python2.7/lib-dynload/readline.so, 2): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /Users/raptor/.virtualenvs/bottle/lib/python2.7/lib-dynload/readline.so
Reason: image not found
「 」가 입니다./usr/local/opt/readline/lib/libreadline.7.dylib
아니다libreadline.6.dylib
심볼 링크를 만듭니다.
ln -s libreadline.7.dylib libreadline.6.dylib
문제가 해결되었습니다!
로 인해 OS X X가 파손될 수 .readline
★★★★★★★★★★★★★★★★★★:
brew uninstall readline
brew upgrade python3
brew install readline
pip3 install readline
해결되지 않으면 .readline
를 사용합니다.pip
를 사용하여 설치합니다.easy_install
:
pip3 uninstall readline
easy_install readline
을 사용법PYTHONSTARTUP
에게는 「」라고 하는 것이 포인트입니다.그은 、 에에 、/etc/pythonstart
이 파일은 인터랙티브하게 되기 전에 python 프로세스에 의해 실행되며 readline/history 처리를 설정합니다.
@chown 덕분에 이 문서의 문서는 다음과 같습니다.http://docs.python.org/2/tutorial/interactive.html
OS X에서는 python 3.5 및 virtualenv 사용
$ pip install gnureadline
인터프리터에서 다음 작업을 수행합니다.
import gnureadline
이것으로 화살표 키가 올바르게 동작합니다.
추가 정보...
2015년 10월 1일 현재 readline은 DEPRECATED입니다(출처:https://github.com/ludwigschwardt/python-readline)).
대신 gnureadline을 사용합니다(https://github.com/ludwigschwardt/python-gnureadline) 참조).
python 3.5를 사용하여 gnureadline 대신 readline을 설치하면 인터프리터로 Import를 시도하면 다음과 같은 오류가 나타납니다.
>>> import readline
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(/Users/pi/tmp/python-readline-test/.venv/lib/python3.5/readline.so, 2): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /Users/pi/tmp/python-readline-test/.venv/lib/python3.5/readline.so
Reason: image not found
나는 최근에 이 문제에 부딪혔다 그리고 많은 책을 읽은 후에pip install readline
하지 않습니다) 및 (Mac osx에서는 동작하지 않습니다).pip install gnureadline
만족스럽지 못한 상태에서 Python 콘솔에서 화살표 키를 사용할 수 있는 설정입니다.
- gnureadline을 사용하여 합니다.
pip install gnureadline
,.import gnureadline
및 화살표 키는 예상대로 작동합니다.자동적으로 동작하도록 하려면 , 다음의 순서에 따릅니다.
- create to) " " " ( " " " " " " )
~/.startup.py
import gnureadline
- 에
~/.bash_profile
export PYTHONSTARTUP=~/.startup.py
하지 않지만 것이 , 의 자동 on of작 one one 。pdb.set_trace()
이 문제에 대한 좋은 해결책을 가지고 있는 사람이 있다면 의견을 주시면 감사하겠습니다.
Ubuntu 16.04 LTS에서 Python 3.6.x의 쉘 이력(tab/arrows 명령)에 문제가 있었습니다.
Python 3.6.x는 소스에서 설치되었습니다.
이 문제를 해결한 것은 user12345가 말한 대로 다음 명령줄을 사용하여 "gnureadline" 모듈을 설치하는 것입니다.
sudo pip3.6 install gnureadline
:)
- readline-devel 패키지를 설치합니다.
- readline 모듈을 사용하여 python을 다시 컴파일합니다.
- 빙고!
다음은 python 3.3용 ubuntu 12.04에서 작동한 단계입니다.
1) 임시로 씁니다.sudo apt-get install libreadline-dev
2) python 3.3.2 소스 파일을 http://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.xz 에서 다운로드합니다.
3) 압축을 풀고 셸 내의 Python-3.3.2/ 디렉토리로 이동합니다.
4) 다음 명령을 실행합니다.
./configure
make
make test
sudo make install
Mac을 High Sierra로 업그레이드한 후 영향을 받아 성공적으로 해결되었습니다.
brew unlink python
xcode-select --install
brew install python
CentOS에서는 다음 방법으로 이 문제를 해결합니다.
yum install readline-devel
python 3.4를 다시 컴파일합니다.
OpenSUSE에서 이 문제를 해결하려면
pip3 install readline
발레리오 크리니의 대답에 따라.
일반적인 솔루션으로는 "pip3 install readline"이 있습니다.내 Cent는 써보지 않았다OS.
Anaconda Python을 사용하는 경우 다음을 실행하여 이 문제를 해결할 수 있습니다.
conda install readline
날 위해 일했다!
두 가지 버전의 Ubuntu에서는 이 답변 중 어느 것도 통하지 않았습니다.나에게 효과가 있었지만, 진정한 해결책은 아니었다면, 내 python code를 에워싸는 것이었다.rlwrap
(ubuntu 저장소 사용 가능):
rlwrap python mycode.py
다음을 수행하여 이 문제를 해결했습니다.
- yum install readline-devel
pip install readline
여기서 다른 오류가 발생했습니다.
gcc: readline/libreadline.a: No such file or directory
gcc: readline/libhistory.a: No such file or directory
는 것것inginging i것 i i 。
patch
:yum install patch
후 나는 .pip install readline
성공적으로 내 비단뱀 껍데기의 탈출 문자를 해결했다.
참고로 Red Hat을 사용하고 있습니다.
conda를 사용하는 사용자의 경우 conda-forge 채널에서 readline 패키지를 설치하면 문제가 해결됩니다.
conda install -c conda-forge readline=6.2
ssh에 가상 단말기를 할당하도록 지시하기 위해 -t 파라미터를 사용하여 ssh를 호출했습니까?
man 페이지부터:
-
TTY를 사용하다리모트 머신상에서 임의의 화면 베이스의 프로그램을 실행하는 경우에 사용할 수 있기 때문에, 메뉴 서비스를 실장할 경우에 매우 편리합니다.여러 -t 옵션을 사용하면 ssh에 로컬 tty가 없는 경우에도 tty 할당이 강제됩니다.
또한 TERM 환경변수를 다른 게시물에 제시된 대로 서버에서 올바르게 설정해야 할 수도 있습니다.
readline 모듈은 권장되지 않습니다.이것은 최신 버전의 python 쉘에서 quit() 또는 exit()를 실행할 때 잘못된 포인터 오류를 일으킵니다. pip install gnureadline
대신
Mac OS X Mojave 10.14.6에서 다양한 이력 설치를 통해brew
이 문제를 해결했습니다.
brew reinstall python2
모든 사람이 다른 설치 시나리오를 가지고 있기 때문에 마법의 총알은 없는 것 같습니다.위의 내용도 시험해 보았기 때문에 몇 가지 답변이 조합되어 있었을지도 모릅니다.Brew 기본값은 다음과 같습니다.python3
에, 「」를 는, 「」를 인스톨 했을 경우는,python2
이치노
다른 SSH 클라이언트를 사용해 본 적이 있습니까?일부 SSH 클라이언트에는 다른 리모트프로세스에 대한 특별한 내장 키매핑이 있습니다.이맥스랑 자주 마주쳤거든요
어떤 클라이언트를 사용하고 있습니까?Putty와 SecureCRT의 동작을 비교해 볼 것을 권장합니다.
환경변수 $TERM은 정상적으로 동작할 때와 동작하지 않을 때 어떻게 설정됩니까?[b]대부분의 경우 환경 설정이 이러한 문제의 핵심입니다.
서버에서 키 코드 라이브러리를 실행해 보십시오.그래도 문제가 해결되지 않으면 읽기 키 기능을 사용하여 라이브러리를 다운로드해 보십시오.
Ubuntu 14.0에서 Python 2.7을 빌드하려고 했습니다.libreadline-dev가 필요합니다.그러나 apt-get에서 가져오면 현재 버전은 6.3으로 Python 2.7과 호환되지 않습니다(Python 3은 확실하지 않습니다).예를 들어, 다음과 같이 이전 버전의 readline에서 정의되었던 데이터 유형 "Function" 및 "CPPFunction"은 6.3에서 삭제되었습니다.
https://github.com/yyuu/pyenv/issues/126
즉, 이전 버전의 readline 소스코드를 취득할 필요가 있습니다.라이브러리용 apt-get에서 libreadline 5.2를 설치하고 헤더 파일의 소스 코드 5.2를 가져옵니다./usr/include에 넣습니다.
드디어 문제가 해결되었습니다.
MacOsx에서는 readline을 재설치하여 수정했습니다.
brew reinstall readline
Unbuntu나 Mint에서 pyenv를 사용하고 있다면
sudo apt install libreadline-dev
pyenv uninstall 3.8.8
pyenv install 3.8.8
libreadline-dev를 설치한 후에는 pip install gnureadline을 모든 python 버전에 설치할 필요가 없습니다.
다음을 통해 'sh'에서 'second'로 전환할 수 있습니다.
$ /sh/bash
언급URL : https://stackoverflow.com/questions/893053/seeing-escape-characters-when-pressing-the-arrow-keys-in-python-shell
'programing' 카테고리의 다른 글
JavaScript를 사용하여 페이지를 새로 고치려면 어떻게 해야 합니까? (0) | 2023.01.30 |
---|---|
MySQL 8 DB에 연결하려면 RMySQL 또는 RMariaDB를 선택하십시오. (0) | 2023.01.30 |
Perm Gen은 실제로 무엇을 의미합니까? (0) | 2023.01.30 |
HTML5/Canvas/JavaScript를 사용하여 브라우저 내 스크린샷 촬영 (0) | 2023.01.30 |
ExecJ에서 JavaScript 실행 시간을 찾을 수 없습니다. (0) | 2023.01.30 |