Jupyter Notebook mit Python 3.8 - NotImplementedError

69

Kürzlich auf Python 3.8 aktualisiert und installiert jupyter. Wenn Sie jedoch versuchen jupyter notebook, Folgendes auszuführen , wird der folgende Fehler angezeigt:

  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

Ich kenne Python 3.8 unter Windows, ProactorEventLoopauf das standardmäßig umgeschaltet wurde, daher vermute ich, dass es damit zusammenhängt.

Jupyter unterstützt Python 3.8 derzeit nicht? Gibt es eine Lösung?

drec4s
quelle
3
Python 3.8 ist sehr frisch, gehen Sie also besser zu 3.7 zurück und warten Sie einige Zeit, bis es besser getestet wird und Module speziell für 3.8 erstellt werden.
Furas
3
noch kaputt in 3.8.1 (heute veröffentlicht).
Rick unterstützt Monica
1
Dies ist jetzt in Version 6.0.3 des Jupyter-Notebooks behoben. Upgrade mitpip install notebook --upgrade
drec4s

Antworten:

178

BEARBEITEN

Dieses Problem tritt in älteren Versionen von Jupyter Notebook auf und wurde in Version 6.0.3 (veröffentlicht am 21.01.2020) behoben. So führen Sie ein Upgrade auf die neueste Version durch:

pip install notebook --upgrade

Nach diesem Problem über GitHub scheint das Problem mit dem tornadoServer zu zusammenhängen, den jupyter verwendet.

Für diejenigen, die nicht auf eine offizielle Korrektur warten können, konnte ich sie zum Laufen bringen tornado/platform/asyncio.py, indem ich die Datei bearbeitete und Folgendes hinzufügte:

import sys

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

Nach den Hauptimporten.

Ich erwarte jedoch bald eine offizielle Lösung dafür.

drec4s
quelle
7
Erwarten Sie keine Lösung vom Tornado-Team: github.com/tornadoweb/tornado/issues/2608
Andrew
9
Wenn Sie nach asyncio.py gesucht haben, schauen Sie sich "C: \ Python3 \ Lib \ site-packages \ tornado \ platform"
Behnam Heydari an
2
Vielen Dank! Wenn Sie eine Conda-Umgebung verwenden, müssen Sie die Version in der Umgebung und nicht nur die globale ändern. Zweitens stellen Sie sicher, dass Sie diese Änderung nach der import asyncioAnweisung hinzufügen :)
Omri374
1
Das hat es für mich behoben. Insbesondere: 1. Sie können den Speicherort der Datei aus dem Stack-Trace abrufen, wenn Sie Folgendes ausführen: jupyter -m notebook 2. Auf meinem System befindet sich die Datei hier: C: \ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ site-packages \ tornado \ platform \ asyncio.py
Isaiah Hines
2
Dies hat bei mir im Januar 2020, Python3.8, nicht funktioniert, aber die Antwort von Mirwise Khan unten hat funktioniert
Wurm
32

Überarbeitung der Antwort im Jahr 2019

Ändern Sie den Endteil der Datei C:\Users\{USER-NAME}\AppData\Local\Programs\Python\Python38\Lib\asyncio\__init__.py

Von

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__

Zu

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
quelle
1
Sowohl die Frage als auch die akzeptierte Antwort stammten aus dem Oktober 2019 und die Lösung funktionierte für mich
Sundeep
2
Die akzeptierte Antwort hat bei mir nicht funktioniert. das tat es. Vielen Dank!
Abhishek Agarwal
5
Dies funktioniert für mich, Januar 2020, Python unter Windows
Cryanbhu
5
Arbeitete auch für mich, Python 3.8 im Januar 2020
fuomag9
2
Ich würde Pythons Standardbibliotheksquellcode nicht ändern.
Martijn Pieters