Notebook Jupyter com Python 3.8 - NotImplementedError

69

Atualizado recentemente para o Python 3.8 e instalado jupyter. No entanto, ao tentar executar, jupyter notebookobtenha o seguinte erro:

  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

Eu sei que o Python 3.8 no Windows mudou para o ProactorEventLooppadrão, então eu suspeito que esteja relacionado a isso.

Jupyter não suporta Python 3.8 no momento? Existe uma solução alternativa?

drec4s
fonte
3
O Python 3.8 é muito novo; portanto, volte para 3.7 e aguarde algum tempo até que seja melhor testado e os módulos sejam criados especialmente para o 3.8.
furas
3
ainda quebrado em 3.8.1 (lançado hoje).
Rick suporta Monica
11
Agora isso foi corrigido na versão 6.0.3 do notebook jupyter. Atualizar compip install notebook --upgrade
drec4s 22/01

Respostas:

178

EDITAR

Esse problema existe nas versões mais antigas do Jupyter Notebook e foi corrigido na versão 6.0.3 (lançada em 2020-01-21). Para atualizar para a versão mais recente, execute:

pip install notebook --upgrade

Após esse problema pelo GitHub, parece que o problema está relacionado ao tornadoservidor que o jupyter usa.

Para aqueles que não podem esperar por uma correção oficial, consegui fazê-lo editando o arquivo tornado/platform/asyncio.py, adicionando:

import sys

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

Após as principais importações.

Espero uma correção oficial para isso em breve, no entanto.

drec4s
fonte
7
Não espere uma correção da equipe do Tornado: github.com/tornadoweb/tornado/issues/2608
Andrew
9
se você estivesse olhando para asyncio.py, dê uma olhada em "C: \ Python3 \ Lib \ site-packages \ tornado \ platform"
Behnam Heydari
2
Obrigado! Se você estiver usando um ambiente conda, altere a versão no ambiente e não apenas a global. Em segundo lugar, certifique-se adicionar essa alteração após a import asynciodeclaração :)
Omri374
11
Isso consertou para mim. Em particular: 1. Você pode obter o local do arquivo no rastreamento de pilha se executar: jupyter -m notebook 2. No meu sistema, o arquivo está localizado aqui: C: \ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ site-packages \ tornado \ platform \ asyncio.py
Isaiah Hines
2
Isso não funcionou para mim em janeiro de 2020, Python3.8, mas a resposta de Mirwise Khan abaixo funcionou
Worm
32

Revisando a resposta em 2019

Alterar a parte final do arquivo 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__

Para

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
fonte
11
Tanto a pergunta quanto a resposta aceita foram de outubro de 2019 e a solução funcionou para mim
Sundeep
2
A resposta aceita não funcionou para mim. isso fez. Obrigado!
Abhishek Agarwal
5
isso funciona para mim, janeiro de 2020, Python no Windows
cryanbhu
5
Trabalhou para mim também, python 3.8 em jan 2020
fuomag9 16/01
2
Eu não alteraria o código fonte da biblioteca padrão do Python.
Martijn Pieters