Ordinateur portable Jupyter avec Python 3.8 - NotImplementedError

69

Mise à niveau récente vers Python 3.8 et installée jupyter. Cependant, lorsque vous essayez d'exécuter, jupyter notebookobtenez l'erreur suivante:

  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

Je connais Python 3.8 sur les fenêtres commutées ProactorEventLooppar défaut, donc je soupçonne qu'il est lié à cela.

Jupyter ne prend pas en charge Python 3.8 pour le moment? Y at-il un travail autour?

drec4s
la source
3
Python 3.8 est très récent, il vaut donc mieux revenir à 3.7 et attendre un peu jusqu'à ce qu'il soit mieux testé et que des modules soient créés spécialement pour 3.8.
furas
3
encore cassé en 3.8.1 (publié aujourd'hui).
Rick soutient Monica
1
Ceci est maintenant corrigé dans la version 6.0.3 du cahier jupyter. pip install notebook --upgrade
Mettre à

Réponses:

178

ÉDITER

Ce problème existe dans les anciennes versions de Jupyter Notebook et a été corrigé dans la version 6.0.3 (publiée le 2020-01-21). Pour mettre à niveau vers la dernière version exécutée:

pip install notebook --upgrade

Suite à ce problème via GitHub, il semble que le problème soit lié au tornadoserveur utilisé par jupyter.

Pour ceux qui ne peuvent pas attendre un correctif officiel, j'ai pu le faire fonctionner en modifiant le fichier tornado/platform/asyncio.py, en ajoutant:

import sys

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

Après les principales importations.

Je m'attends cependant à un correctif officiel bientôt.

drec4s
la source
7
Ne vous attendez pas à un correctif de l'équipe Tornado: github.com/tornadoweb/tornado/issues/2608
Andrew
9
si vous recherchez asyncio.py, jetez un œil à "C: \ Python3 \ Lib \ site-packages \ tornado \ platform"
Behnam Heydari
2
Merci! Si vous utilisez un env conda, assurez-vous de changer la version dans l'env et pas seulement la version globale. Deuxièmement, assurez-vous d'ajouter cette modification après la import asynciodéclaration :)
Omri374
1
Cela m'a arrangé. En particulier: 1. Vous pouvez obtenir l'emplacement du fichier à partir de la trace de la pile si vous exécutez: jupyter -m notebook 2. Sur mon système, le fichier se trouve ici: C: \ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ site-packages \ tornado \ platform \ asyncio.py
Isaiah Hines
2
Cela n'a pas fonctionné pour moi janvier 2020, Python3.8 mais la réponse de Mirwise Khan ci-dessous l'a fait
Worm
32

Réviser la réponse en 2019

Changer la fin du fichier C:\Users\{USER-NAME}\AppData\Local\Programs\Python\Python38\Lib\asyncio\__init__.py

De

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__
Mirwise Khan
la source
1
La question et la réponse acceptée
datent
2
La réponse acceptée n'a pas fonctionné pour moi. cela a fait. Merci!
Abhishek Agarwal
5
cela fonctionne pour moi, janvier 2020, Python sur Windows
cryanbhu
5
A aussi fonctionné pour moi, python 3.8 en
fuomag9
2
Je n'irais pas modifier le code source de la bibliothèque standard de Python.
Martijn Pieters