78 votes

Jupyter Notebook avec Python 3.8 - NotImplementedError

J'ai récemment effectué une mise à jour vers Python 3.8, et j'ai installé jupyter . Cependant, en essayant d'exécuter jupyter notebook Je reçois 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 sais que Python 3.8 sous Windows est passé à ProactorEventLoop par défaut, donc je soupçonne que c'est lié à cela.

Jupyter ne supporte pas Python 3.8 pour le moment ? Existe-t-il une solution de contournement ?

3 votes

Python 3.8 est très récent, il vaut mieux revenir à la version 3.7 et attendre un peu jusqu'à ce qu'il soit mieux testé et que des modules soient créés spécialement pour la 3.8.

1 votes

3 votes

Toujours cassé dans la version 3.8.1 (publiée aujourd'hui).

201voto

drec4s Points 1606

EDITAR

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

pip install notebook --upgrade

Si l'on suit cette question via GitHub, il semble que le problème soit lié à l'élément suivant tornado que jupyter utilise.

~~

Pour ceux qui ne peuvent pas attendre un correctif officiel, j'ai réussi à 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 importations principales.

J'espère cependant qu'un correctif officiel sera bientôt apporté à ce problème.

~~

45voto

Mirwise Khan Points 668

Révision de la réponse en 2019

Changez la partie finale du fichier 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__

1 votes

La question et la réponse acceptée datent toutes deux d'octobre 2019 et la solution a fonctionné pour moi.

2 votes

La réponse acceptée n'a pas fonctionné pour moi. Celle-ci a fonctionné. Merci !

7 votes

Cela a marché pour moi aussi, python 3.8 en janvier 2020.

3voto

penguins Points 68

Pour moi, j'ai dû réinstaller asyncio

pip install asyncio --upgrade

Et mettez à jour le paquet du noyau

pip install ipykernel --upgrade

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X