파이썬을 대화식으로 실행 한 후 OS-X 터미널이 이상하게 동작합니다.


11

os-x 터미널에서 python repl (2.7.10)을 실행하고 종료 한 후 터미널은 더 이상 입력 된 입력을 반향하지 않으며 다른 이상한 일이 발생합니다. python다시 실행 exit()하면 터미널이 복원 된 것 같습니다. 이제 탭을 닫고 새 탭을 열었으므로 광범위하게 테스트하지 않았습니다.

나는 이것이 터미널 설정과 관련이 있다고 생각하지만, 그것은 최근의 일이며 기억 나는 것을 변경하지 않았습니다. macports일부 콘솔 라이브러리와 일치하지 않는 종속성과 관련이있는 경우 Python이로 설치됩니다 . 2.7.10은 얼마 전에 설치되었으며 설치 후에는 발생하지 않았습니다.

너클에 균열이 생기고 열립니다terminal

[~]: virtualenv-2.7 venv-test
[~]: source venv-test/bin/activate
[~]: python
>>> ^D>>>       *(press ctrl-d, the 2nd >>> is strange)
[~]:            *(type something like `ls-l`, nothing shows on console)
[~]: -bash: ls-l: command not found`

또한, 파이썬을 다시 실행하고 ctrl-d결과를 출력하면 :

>>> ^D           (ctrl-d, then hit enter, doesn't exit)
>>> ^D           (...)
>>> ^D           (...)
>>> exit()       (typing exit() quits the session)
>>> [~]: 

macports를 통해 Python을 설치하는 이유는 무엇입니까? Python v2.7.10은 El Cap에 포함되어 있으며 Yosemite라고 생각합니다. 특히 Mac Ports에서 얻는 것이 있습니까?
— Benjamin Schollnick

글쎄, 2.7. mac과 함께 제공된 것보다 큰 것을 사용하십시오. 시스템 파이썬 (UNIX의 표준 문제)을 만지지 말고 2.7을 실행하고 사용자 정의 GIS 옵션을 컴파일하고 mtmt 패키지와 3.4를 동시에 실행하십시오. 그러나 당신이 해야하는 진정한 이유는 시스템 파이썬으로 fsck하지 않기 때문입니다.
— Andrew Backer

파이썬 응용 프로그램이 일종의 창 관리를 수행합니까? (예 : 저주, NCurses 등 사용)
— Benjamin Schollnick

입력 python한 다음 응용 프로그램이 없습니다ctrl-d
— Andrew Backer

답변:


12

이 문제와 관련하여 MacPorts에 공개 버그가 있습니다.

https://trac.macports.org/ticket/48807

"+ readline"옵션으로 파이썬을 설치하면 문제를 해결할 수 있으며 직접 확인하여 문제를 해결할 수 있습니다.

sudo port uninstall python27
sudo port install python27 +readline

9
버그 보고서를 찾아 주셔서 감사합니다. FpyWy, python27을 제거 할 수는 없습니다 (일반적으로 너무 많은 패키지가 의존합니다). 따라서 다시 빌드해야합니다. 를 실행하십시오 sudo port selfupdate && sudo port clean python27 && sudo port install python27 +readline. 로컬 트리가 오래된 경우 + readline 변형을 사용할 수 없습니다. 는 selfupdate그 해결됩니다.
— Andrew Backer

8

터미널 모드는 응용 프로그램에서 원시 또는 중단으로 설정되며 비정상적으로 종료되면 모드가 복원되지 않습니다. 특히이 경우 Enter키 (control / M 일명 캐리지 리턴)를 줄 바꿈 (control / J 일명 줄 바꿈)에 매핑하는 기능 이 종종 비활성화됩니다. 다음을 입력하여 반품 관련 문제를 해결할 수 있습니다

stty sane

뒤에 controlJ

명령을 다시 입력하면 backspace일반적인 기능에 할당되지 않을 수 있지만 명령을 다시 입력 할 수 있습니다.

일부는 reset명령 사용을 권할 수도 있지만 주어진 증상은 해당 프로그램의 기능과 관련이 없습니다.

더 읽을 거리


stty echo문제를 해결하는 것 같습니다 ( stackoverflow.com/questions/32475928/python3-messes-up-terminal ). 그것이 모든 것을 돌보고 있는지 확실하지 않습니다. 구문 오류로 인해 새 줄을 수동으로 입력하여 새 명령을 입력해야하기 때문에 파이썬에 약간의 문제가 있다고 생각합니다. 그렇지 않아야합니다.
— Andrew Backer

이 방법으로 문제를 해결할 수는 없지만 적어도 사실 후에 문제를 해결할 수 있습니다. 지금은 충분합니다. 왜 이런 일이 발생 하는지 알 수있는 방법이 있다면 알고 싶습니다.
— Andrew Backer

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