Notebook Jupyter con Python 3.8 - NotImplementedError


69

Aggiornato di recente a Python 3.8 e installato jupyter. Tuttavia, quando si tenta di eseguire jupyter notebookottenendo il seguente errore:

  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

Conosco Python 3.8 su Windows passato di ProactorEventLoopdefault, quindi sospetto che sia correlato a questo.

Jupyter non supporta Python 3.8 al momento? C'è un lavoro in giro?


3
Python 3.8 è molto recente, quindi è meglio tornare a 3.7 e attendere un po 'di tempo fino a quando non verrà testato meglio e i moduli verranno creati appositamente per 3.8.
furas,


3
ancora rotto in 3.8.1 (rilasciato oggi).
Rick supporta Monica il

1
Questo problema è stato risolto nella versione 6.0.3 del notebook jupyter. Esegui l'upgrade conpip install notebook --upgrade
drec4s il

Risposte:


178

MODIFICARE

Questo problema esiste nelle versioni precedenti di Jupyter Notebook ed è stato risolto nella versione 6.0.3 (rilasciata il 2020-01-21). Per eseguire l'aggiornamento all'ultima versione eseguita:

pip install notebook --upgrade

A seguito di questo problema tramite GitHub, sembra che il problema sia correlato al tornadoserver utilizzato da Jupyter.

Per coloro che non possono aspettare una correzione ufficiale, sono stato in grado di farlo funzionare modificando il file tornado/platform/asyncio.py, aggiungendo:

import sys

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

Dopo le principali importazioni.

Mi aspetto una soluzione ufficiale per questo presto, tuttavia.


7
Non aspettarti una correzione dal team Tornado: github.com/tornadoweb/tornado/issues/2608
Andrew,

9
se stavi cercando asyncio.py, dai un'occhiata a "C: \ Python3 \ Lib \ site-pacchetti \ tornado \ platform"
Behnam Heydari

2
Grazie! Se stai usando un conda env, assicurati di cambiare la versione in env e non solo quella globale. Secondo, assicurati di aggiungere questa modifica dopo la import asynciodichiarazione :)
Omri374

1
Questo mi ha risolto. In particolare: 1. È possibile ottenere la posizione del file dalla traccia dello stack se si esegue: jupyter -m notebook 2. Sul mio sistema il file si trova qui: C: \ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ site-pacchetti \ tornado \ platform \ asyncio.py
Isaiah Hines il

2
Questo non ha funzionato per me nel gennaio 2020, Python3.8 ma la risposta di Mirwise Khan di seguito ha funzionato
Worm

32

Revisionare la risposta nel 2019

Cambia la parte finale del file C:\Users\{USER-NAME}\AppData\Local\Programs\Python\Python38\Lib\asyncio\__init__.py

A partire dal

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__

Per

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
Sia la domanda che la risposta accettata erano dell'ottobre 2019 e la soluzione ha funzionato per me
Sundeep

2
La risposta accettata non ha funzionato per me. questo ha fatto. Grazie!
Abhishek Agarwal,

5
questo funziona per me, gennaio 2020, Python su Windows
cryanbhu

5
Ha funzionato anche per me, python 3.8 a gennaio 2020
fuomag9,

2
Vorrei non andare a modificare il codice sorgente libreria standard di Python.
Martijn Pieters
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.