ProgramingTip

Cygwin에서 Windows Python 사용

bestdevel 2020. 11. 29. 12:01
반응형

Cygwin에서 Windows Python 사용


최근 Windows에서 Cygwin을 사용하고 있습니다. 선호하는 Windows 설치를 사용하고 있기 때문에 테스트하는 동안 /cygdrive/c/Python26/python.exe myfile.py내가 사용하고 있습니다 python myfile.exe.

이것은 인쇄를 제외하고 거의 완벽하게 작동합니다. Cygwin에서 Windows Python을 실행하면 실행이 완료 될 때까지 출력되지 않습니다. explorer.exe 또는 cmd.exe의 Windows Python에서 제대로 실행되고 Cygwin이 Python ( /bin/python.exe)을 사용하여 Cygwin에서 작동합니다 .

이에 대한 해결 방법이 있습니까? 중요한 것은 Windows 버전을 사용하는 것이지만 Bash에서 모든 작업을 수행하고 싶습니다.


아마도 출력을 플러시하는 경우

import sys

V = range(100000)
for x in V:
    print x
    sys.stdout.flush()

Cygwin 터미널 프로그램에서 명령을 사용할 때 Windows 콘솔로 작동하지는 것입니다. CMD 또는 Console2와 같은 Windows 콘솔 기반 그렇게합니다. 따라서 Cygwin 터미널에서 Windows python.exe는 대화 형 콘솔과 통신하고 생각하지 않습니다.

이는 모든 대화식 세션에서 수행되는 것처럼 플러시하는 대신 버퍼링 출력으로 이어집니다. 그렇기 때문에 Amro가 모든 줄에 플러시 ()를 추가하면 증상이 해결 코드를 변경해야합니다.

코드를 변경하지 않고 한 가지 해결은 명령 줄에서 '-u'플래그를 사용하거나 PYTHONUNBUFFERED 환경 변수를 설정하여 Python에서 버퍼링을 끄는 것입니다.

export PYTHONUNBUFFERED=1

/cydrive/c/Python27/python.exe foo.py

또는

/cydrive/c/Python27/python.exe -u foo.py

또는 대화 형 모드에서 실행

/cydrive/c/Python27/python.exe -i foo.py

또한 Cygwin 터미널에서 Windows python.exe 대화 형 모드를 사용할 수 없습니다. 대화 형 세션을 오지 않고 그냥 멈을 불러 다. 가장 좋은 해결책은 'cygstart'를 사용하는 것입니다 ( '-i'옵션을 사용하는 것보다 낫습니다).

cygstart /cygdrive/c/Python27/python.exe

그리고 그것은 ipython 작동하는 것입니다 (설치된 경우) :

cygstart /cygdrive/c/Python27/Scripts/ipython.exe

초기 질문에는 없지만 Cygwin 터미널 (예 : mintty)에서 Python 대화 형 세션 을 사용하려는 사용자를 위해 - "-i"옵션으로 Python을 시작하여 대화 형 모드에서 실행해야 함을 명시 적으로 알려줍니다.

$ python -i

깔끔한 방법은 .bashrc에 말하는 것을 만드는 것입니다. (어 · 든 대화 형 터미널 세션에서 읽을 수 있음)

alias python='python -i'

모든 Cygwin pty 기반 터미널 (mintty, rxvt 및 xterm)이 콘솔이 아닌 Windows에서 파이프로 인식되기 때문에 Python은 콘솔에서 실행되는 것을 알지 못합니다. 따라서 Python은 콘솔이 생각하고 비대화 형 모드로 들어갑니다. 따라서 대신 대화 형 모드를 원하면 Python 에이를 사용하도록 명시 적으로 지시해야합니다. 그러나 여전히 작동하지 않습니다. 여전히 HOME 또는 화살표 키 등을 사용할 수 없습니다.

참고 URL : https://stackoverflow.com/questions/3250749/using-windows-python-from-cygwin

반응형