Cuaderno Jupyter con Python 3.8 - NotImplementedError

69

Actualizado recientemente a Python 3.8 e instalado jupyter. Sin embargo, al intentar ejecutar jupyter notebookel siguiente error:

  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

Sé que Python 3.8 en Windows está activado ProactorEventLooppor defecto, por lo que sospecho que está relacionado con esto.

¿Jupyter no es compatible con Python 3.8 en este momento? ¿Hay alguna solución?

drec4s
fuente
3
Python 3.8 es muy nuevo, así que mejor regrese a 3.7 y espere un tiempo hasta que se pruebe mejor y se creen módulos especialmente para 3.8.
furas
3
todavía roto en 3.8.1 (lanzado hoy).
Rick apoya a Mónica el
1
Esto ahora está arreglado en la versión 6.0.3 del cuaderno jupyter. Actualice conpip install notebook --upgrade
drec4s

Respuestas:

178

EDITAR

Este problema existe en versiones anteriores de Jupyter Notebook y se corrigió en la versión 6.0.3 (lanzada 2020-01-21). Para actualizar a la última versión, ejecute:

pip install notebook --upgrade

Siguiendo este problema a través de GitHub, parece que el problema está relacionado con el tornadoservidor que utiliza jupyter.

Para aquellos que no pueden esperar una solución oficial, pude hacer que funcione editando el archivo tornado/platform/asyncio.py, agregando:

import sys

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

Después de las principales importaciones.

Sin embargo, espero una solución oficial para esto pronto.

drec4s
fuente
77
No espere una solución del equipo de Tornado: github.com/tornadoweb/tornado/issues/2608
Andrew
99
si estaba buscando asyncio.py, eche un vistazo a "C: \ Python3 \ Lib \ site-packages \ tornado \ platform"
Behnam Heydari
2
¡Gracias! Si está utilizando un conda env, asegúrese de cambiar la versión en el env y no solo la global. En segundo lugar, asegúrese de agregar este cambio después de la import asynciodeclaración :)
Omri374
1
Esto me lo arregló. En particular: 1. Puede obtener la ubicación del archivo del seguimiento de la pila si ejecuta: jupyter -m notebook 2. En mi sistema, el archivo se encuentra aquí: C: \ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ site-packages \ tornado \ platform \ asyncio.py
Isaiah Hines
2
Esto no funcionó para mí en enero de 2020, Python3.8, pero la respuesta de Mirwise Khan a continuación sí funcionó
Gusano
32

Revisando la respuesta en 2019

Cambiar la parte final del archivo C:\Users\{USER-NAME}\AppData\Local\Programs\Python\Python38\Lib\asyncio\__init__.py

Desde

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__

A

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
fuente
1
Tanto la pregunta como la respuesta aceptada fueron de octubre de 2019 y la solución funcionó para mí
Sundeep
2
La respuesta aceptada no funcionó para mí. Esto lo hizo. ¡Gracias!
Abhishek Agarwal
55
esto funciona para mí, enero de 2020, Python en Windows
cryanbhu
55
También funcionó para mí, Python 3.8 en enero de 2020
fuomag9
2
Yo no ir y modificar el código fuente de la biblioteca estándar de Python.
Martijn Pieters