Блокнот Jupyter с Python 3.8 - NotImplementedError

69

Недавно обновлен до Python 3.8 и установлен jupyter. Однако при попытке запустить jupyter notebookполучаю следующую ошибку:

  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

Я знаю, что Python 3.8 в Windows включен ProactorEventLoopпо умолчанию, поэтому я подозреваю, что это связано с этим.

Jupyter не поддерживает Python 3.8 на данный момент? Есть ли работа вокруг?

drec4s
источник
3
Python 3.8 очень свежий, поэтому лучше вернуться к 3.7 и подождать некоторое время, пока он не будет лучше протестирован и модули будут созданы специально для 3.8.
фура
3
все еще сломан в 3.8.1 (выпущен сегодня).
Рик поддерживает Монику
1
Это теперь исправлено в версии 6.0.3 ноутбука jupyter. Обновление сpip install notebook --upgrade
drec4s

Ответы:

178

РЕДАКТИРОВАТЬ

Эта проблема существует в более старых версиях Jupyter Notebook и была исправлена ​​в версии 6.0.3 (выпущена 2020-01-21). Для обновления до последней версии выполните:

pip install notebook --upgrade

Следуя этой проблеме через GitHub, кажется, что проблема связана с tornadoсервером, который использует jupyter.

Для тех, кто не может дождаться официального исправления, я смог заставить его работать, отредактировав файл tornado/platform/asyncio.py, добавив:

import sys

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

После основного импорта.

Я ожидаю официального исправления для этого в ближайшее время, однако.

drec4s
источник
7
Не ожидайте исправления от команды Торнадо: github.com/tornadoweb/tornado/issues/2608
Эндрю
9
если вы искали asyncio.py, посмотрите на "C: \ Python3 \ Lib \ сайта-пакеты \ смерч \ платформа"
Behnam Хейдари
2
Спасибо! Если вы используете conda env, обязательно измените версию в env, а не только глобальную. Во-вторых, убедитесь, что вы добавили это изменение после import asyncioутверждения :)
Omri374
1
Это исправило это для меня. В частности: 1. Вы можете получить местоположение файла из трассировки стека, если запустите: jupyter -m notebook 2. В моей системе файл находится здесь: C: \ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ site-packages \ Торнадо \ платформа \ asyncio.py
Исаия Хайнс
2
Это не сработало для меня в январе 2020 года, Python3.8, но приведенный ниже ответ Mirwise Khan сработал
Worm
32

Пересмотр ответа в 2019 году

Изменить конечную часть файла C:\Users\{USER-NAME}\AppData\Local\Programs\Python\Python38\Lib\asyncio\__init__.py

От

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
источник
1
И вопрос, и принятый ответ были с октября 2019 года, и решение сработало для меня
Sundeep
2
Принятый ответ не работал для меня. это сделал. Спасибо!
Абхишек Агарвал
5
это работает для меня, январь 2020, Python на Windows
cryanbhu
5
У меня тоже работал Python 3.8 в
январе
2
Я бы не стал менять исходный код стандартной библиотеки Python.
Мартин Питерс