programing

python 쉘에서 화살표 키를 누르면 이스케이프 문자가 표시됩니다.

goodcopy 2023. 1. 30. 22:27
반응형

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 콘솔에서 화살표 키를 사용할 수 있는 설정입니다.

  1. gnureadline을 사용하여 합니다.pip install gnureadline

,.import gnureadline및 화살표 키는 예상대로 작동합니다.자동적으로 동작하도록 하려면 , 다음의 순서에 따릅니다.

  1. create to) " " " ( " " " " " " )~/.startup.pyimport gnureadline
  2. ~/.bash_profileexport 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

:)

  1. readline-devel 패키지를 설치합니다.
  2. readline 모듈을 사용하여 python을 다시 컴파일합니다.
  3. 빙고!

다음은 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

반응형