Ноутбук Юпітера з 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за замовчуванням, тому підозрюю, що це пов’язано з цим.

Наразі Юпітер не підтримує Python 3.8? Чи є робота навколо?


3
Python 3.8 дуже свіжий, тому краще поверніться до 3.7 і зачекайте деякий час, поки воно не буде краще перевірене, а модулі будуть створені спеціально для 3.8.
furas


3
все ще порушено в 3.8.1 (опубліковано сьогодні).
Рік підтримує Моніку

1
Тепер це виправлено у версії 6.0.3 зошита з юпітером. Оновити зpip install notebook --upgrade
drec4s

Відповіді:


178

EDIT

Ця проблема існує у старих версіях Jupyter Notebook та була виправлена ​​у версії 6.0.3 (випущена 2020-01-21). Щоб оновити до останньої версії запуску:

pip install notebook --upgrade

Після цього питання через GitHub, здається, проблема пов'язана з tornadoсервером, який використовує юпітер.

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

import sys

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

Після основного імпорту.

Однак я очікую офіційного виправлення цього питання.


7
Не чекайте виправлення від команди Tornado: github.com/tornadoweb/tornado/isissue/2608
Andrew

9
якщо ви шукали asyncio.py, подивіться на "C: \ Python3 \ Lib \ site-пакети \ tornado \ платформа"
Behnam

2
Дякую! Якщо ви використовуєте conda env, не забудьте змінити версію в env, а не лише глобальній. По-друге, переконайтеся, що ви додали цю зміну після import asyncioзаяви :)
Omri374

1
Це зафіксувало це для мене. Зокрема: 1. Ви можете отримати розташування файлу зі сліду стека, якщо запустити: jupyter -m notebook 2. У моїй системі файл знаходиться тут: C: \ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ site-пакети \ tornado \ платформа \ 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__

1
І питання, і прийнята відповідь були з жовтня 2019 року, і рішення працювало для мене
Sundeep

2
Прийнята відповідь не спрацювала для мене. це зробили. Дякую!
Абхішек Агарвал

5
це працює для мене, січень 2020, Python на Windows
cryanbhu

5
Для мене теж працював пітон 3.8 в
січні

2
Я б не пішов і змінив вихідний код бібліотеки Python.
Martijn Pieters
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.