Notatnik Jupyter z Python 3.8 - NotImplementedError

69

Ostatnio zaktualizowano do Python 3.8 i zainstalowano jupyter. Jednak podczas próby uruchomienia pojawia jupyter notebooksię następujący błąd:

  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

Wiem, że Python 3.8 w systemie Windows ProactorEventLoopjest domyślnie włączony , więc podejrzewam, że jest to związane z tym.

Jupyter obecnie nie obsługuje Python 3.8? Czy jest w pobliżu praca?

drec4s
źródło
3
Python 3.8 jest bardzo świeży, więc lepiej wróć do 3.7 i poczekaj trochę czasu, aż będzie lepiej przetestowany i moduły zostaną utworzone specjalnie dla 3.8.
furas
3
wciąż zepsuty w wersji 3.8.1 (wydanej dzisiaj).
Rick wspiera Monikę
1
Zostało to naprawione w wersji 6.0.3 notatnika jupyter. Aktualizacja zpip install notebook --upgrade
drec4s

Odpowiedzi:

178

EDYTOWAĆ

Ten problem występuje w starszych wersjach Jupyter notebooki i została ustalona w wersji 6.0.3 (wydany 2020-01-21). Aby zaktualizować do najnowszej wersji, uruchom:

pip install notebook --upgrade

Po rozwiązaniu tego problemu za pośrednictwem GitHub wydaje się, że problem dotyczy tornadoserwera, z którego korzysta jupyter.

Dla tych, którzy nie mogą doczekać się oficjalnej poprawki, mogłem ją uruchomić, edytując plik tornado/platform/asyncio.py, dodając:

import sys

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

Po głównym imporcie.

Jednak wkrótce spodziewam się oficjalnej poprawki.

drec4s
źródło
7
Nie oczekuj rozwiązania ze strony zespołu Tornado: github.com/tornadoweb/tornado/issues/2608
Andrew
9
jeśli szukasz pliku asyncio.py, spójrz na „C: \ Python3 \ Lib \ site-packages \ tornado \ platforma”
Behnam Heydari
2
Dzięki! Jeśli używasz env conda, pamiętaj o zmianie wersji env, a nie tylko globalnej. Po drugie, pamiętaj o dodaniu tej zmiany po import asynciooświadczeniu :)
Omri374,
1
Naprawiłem to dla mnie. W szczególności: 1. Możesz pobrać lokalizację pliku ze śledzenia stosu, jeśli uruchomisz: jupyter -m notebook 2. W moim systemie plik znajduje się tutaj: C: \ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ site-packages \ tornado \ platform \ asyncio.py
Isaiah Hines
2
To nie działało dla mnie styczeń 2020, Python3.8, ale odpowiedź Mirwise Khana poniżej
Worm
32

Przegląd odpowiedzi w 2019 r

Zmień końcową część pliku C:\Users\{USER-NAME}\AppData\Local\Programs\Python\Python38\Lib\asyncio\__init__.py

Od

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__

Do

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__
Mirwise Khan
źródło
1
Zarówno pytanie, jak i zaakceptowana odpowiedź pochodziły z października 2019 r., A rozwiązanie zadziałało dla mnie
Sundeep
2
Przyjęta odpowiedź nie działała dla mnie. to zrobiło. Dzięki!
Abhishek Agarwal
5
to działa dla mnie, styczeń 2020, Python w systemie Windows
cryanbhu
5
Pracowałem też dla mnie, python 3.8 w
styczniu
2
I byłoby nie pójść i zmienić standardowy kod źródłowy biblioteki Pythona.
Martijn Pieters