본문 바로가기

프로그래밍/Python

ipython : Exception [WinError 995] 스레드 종료 또는 응용 프로그램 요청 때문에 I/O 작업이 취소되었습니다

반응형

윈도우 커맨드 프롬프트에서 파이썬 간단한 테스트를 해보기 위해 ipython 을 설치하고, ipython 프롬프트로 들어가서, pd.read_csv 를 수행해 보았는데, 아래와 같은 에러가 발생했다.

In [3]: df = pd.read_csv("final_grade.txt")

In [4]: df
Out[4]:
0   Lee   57   76  65  98  87    86  56  69  61  51
1   Cha   98   55  67  91  61    78  95  98  90  75
2  Kang   79  100  84  53  60    59  93  53  55  75


Unhandled exception in event loop:
  File "C:\Programs\Python3864\lib\asyncio\proactor_events.py", line 768, in _loop_self_reading
    f.result()  # may raise
  File "C:\Programs\Python3864\lib\asyncio\windows_events.py", line 808, in _poll
    value = callback(transferred, key, ov)
  File "C:\Programs\Python3864\lib\asyncio\windows_events.py", line 457, in finish_recv
    raise ConnectionResetError(*exc.args)

Exception [WinError 995] 스레드 종료 또는 응용 프로그램 요청 때문에 I/O 작업이 취소되었습니다
Press ENTER to continue...

에러메시지를 구글링 해 보니 ipython github의 issue ( 'Unhandled exception in event loop' (WinError 995) )가 검색되었다.  

ipython 이 사용하는 prompt toolkit 패키지의 버전을 2.x 대로 내려보라는 글이 있었다. 좀 더 자세한 설명은 다음과 같다.

Carreau commented on 17 Dec 2019

Prompt_toolkit 3 (the library that allows IPython to have multi-line editing and syntactic coloration) was released just before IPython 7.10; it tries to play nicer with asyncio eventloop if you do some concurrent programming. We've done our best to make IPython compatible with prompt toolkit 3, but there are a couple of edge case we might not have though about.

Everything should work fine with prompt_toolkit 2.x, and we'll try to figure out why you got the above error.

With your current error it is hard to know where exactly this is coming from, but hopefully in the next few release we'll narrow down the reason.
prompt_toolket 3 은 ipython 7.10 이전에 릴리즈 되었다. 이 버전은 asyncio 이벤트루프에 좀 더 잘 동작하도록 변경되었다. 우리도 ipython 이 prompt toolket 3 과 호환되도록 최선을 다했지만, 미처 생각지 못했던 케이스가 있었다.

prompt_toolket 2.x 와는 모두 문제없이 동작할거다. ...

지금 현재 정확히 어떤 이유로 이 에러가 발생하는지 알수 없지만, 바라건데 앞으로 몇번의 릴리즈 안에 이유를 알아낼 수 있기를 바란다.

pip list 를 해 보니, 과연 prompt-toolkit 버전은 3.0.8 이었고, pip install "prompt-toolkit<3" 으로 버전을 내려서 테스트해 보니 에러가 없어졌다.

728x90