Python 3.8이 포함 된 Jupyter 노트북-NotImplementedError


69

최근 Python 3.8로 업그레이드하고 설치했습니다 jupyter. 그러나 실행하려고 jupyter notebook하면 다음 오류가 발생합니다.

  File "c:\users\user\appdata\local\programs\python\python38\lib\site-packages\tornado\platform\asyncio.py", line 99, in add_handler
    self.asyncio_loop.add_reader(fd, self._handle_events, fd, IOLoop.READ)
  File "c:\users\user\appdata\local\programs\python\python38\lib\asyncio\events.py", line 501, in add_reader
    raise NotImplementedError
NotImplementedError

Windows의 Python 3.8 ProactorEventLoop이 기본적으로 전환되어 있다는 것을 알고 있으므로 이와 관련이 있다고 생각합니다.

Jupyter는 현재 Python 3.8을 지원하지 않습니까? 해결 방법이 있습니까?


3
Python 3.8은 매우 신선하므로 3.7로 돌아가서 더 잘 테스트되고 모듈이 3.8을 위해 특별히 만들어 질 때까지 기다리십시오.
furas


3
여전히 3.8.1 (오늘 출시)에서 깨졌습니다.
Rick은 Monica 님이

1
이는 jupyter 노트북 버전 6.0.3에서 수정되었습니다. 다음으로 업그레이드pip install notebook --upgrade
drec4s

답변:


178

편집하다

이 문제는 이전 버전의 Jupyter Notebook에 있으며 버전 6.0.3 (2020-01-21 릴리스) 에서 수정되었습니다 . 최신 버전으로 업그레이드하려면 다음을 실행하십시오.

pip install notebook --upgrade

GitHub를 통한이 문제에 이어 tornadojupyter가 사용 하는 서버 와 관련된 문제인 것 같습니다 .

공식 수정을 기다릴 수없는 사람들을 위해 다음 tornado/platform/asyncio.py을 추가 하여 파일을 편집하여 작업을 수행 할 수있었습니다 .

import sys

if sys.platform == 'win32':
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())

주요 수입 후.

그러나 곧 공식적인 수정이 필요합니다.


7
토네이도 팀의 수정을 기대하지 마십시오 : github.com/tornadoweb/tornado/issues/2608
Andrew

9
당신이 asyncio.py을 찾고 있다면, 한 번 봐 가지고 "C : \ Python3 \ lib 디렉토리 \ 사이트 - 패키지 \ 토네이도 \ 플랫폼"
Behnam Heydari

2
감사! conda env를 사용하는 경우 전역 버전뿐만 아니라 env 버전도 변경해야합니다. 둘째로, 다음과 같은 import asyncio문장
뒤에이

1
이것은 나를 위해 그것을 고쳤다. 특히 : 1. 다음을 실행하면 스택 추적에서 파일 위치를 얻을 수 있습니다. jupyter -m notebook 2. 내 시스템에서 파일은 다음 위치에 있습니다. C : \ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ site-packages \ tornado \ platform \ asyncio.py
이사야 하인즈

2
이 날 1 월 2020 작동하지 않았다, Python3.8하지만 Mirwise 칸의 대답은 아래 한
웜을

32

2019 년 답변 수정

파일의 끝 부분을 변경 C:\Users\{USER-NAME}\AppData\Local\Programs\Python\Python38\Lib\asyncio\__init__.py

에서

if sys.platform == 'win32':  # pragma: no cover
    from .windows_events import *
    __all__ += windows_events.__all__
else:
    from .unix_events import *  # pragma: no cover
    __all__ += unix_events.__all__

import asyncio

if sys.platform == 'win32':
    from .windows_events import *
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
    __all__ += windows_events.__all__
else:
    from .unix_events import *  # pragma: no cover
    __all__ += unix_events.__all__

1
질문과 대답은 모두 2019 년 10 월부터 왔으며 해결책은 저에게
효과적

2
받아 들인 대답이 효과가 없었습니다. 이했다. 감사!
Abhishek Agarwal

5
이것은 나를 위해 작동합니다, 2020 년 1 월, Windows 용 Python
cryanbhu

5
나를 위해
일한

2
나는 파이썬의 표준 라이브러리 소스 코드를 바꾸지 않을 것이다 .
Martijn Pieters
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.