Notebook Jupyter dengan Python 3.8 - NotImplementedError

69

Baru-baru ini ditingkatkan ke Python 3.8, dan diinstal jupyter. Namun, ketika mencoba menjalankan jupyter notebookmendapatkan kesalahan berikut:

  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

Saya tahu Python 3.8 di windows diaktifkan ProactorEventLoopsecara default, jadi saya curiga ini terkait dengan ini.

Jupyter tidak mendukung Python 3.8 saat ini? Apakah ada pekerjaan?

drec4s
sumber
3
Python 3.8 sangat segar jadi lebih baik kembali ke 3.7 dan tunggu beberapa saat sampai akan diuji lebih baik dan modul akan dibuat khusus untuk 3.8.
furas
3
masih rusak di 3.8.1 (dirilis hari ini).
Rick mendukung Monica
1
Ini sekarang diperbaiki dalam versi 6.0.3 notebook jupyter. Tingkatkan denganpip install notebook --upgrade
drec4s

Jawaban:

178

EDIT

Masalah ini ada di versi lama dari Jupyter Notebook dan diperbaiki di versi 6.0.3 (dirilis 2020-01-21). Untuk meningkatkan ke versi terbaru, jalankan:

pip install notebook --upgrade

Mengikuti masalah ini melalui GitHub, tampaknya masalahnya terkait dengan tornadoserver yang digunakan jupyter.

Bagi mereka yang tidak bisa menunggu untuk perbaikan resmi, saya bisa membuatnya bekerja dengan mengedit file tornado/platform/asyncio.py, dengan menambahkan:

import sys

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

Setelah impor utama.

Saya berharap perbaikan resmi untuk ini segera, namun.

drec4s
sumber
7
Jangan mengharapkan perbaikan dari tim Tornado: github.com/tornadoweb/tornado/issues/2608
Andrew
9
jika Anda mencari asyncio.py, lihat "C: \ Python3 \ Lib \ situs-paket \ tornado \ platform"
Behnam Heydari
2
Terima kasih! Jika Anda menggunakan conda env, Pastikan untuk mengubah versi di env dan tidak hanya yang global. Kedua, pastikan Anda menambahkan perubahan ini setelah import asynciopernyataan :)
Omri374
1
Ini memperbaikinya untuk saya. Khususnya: 1. Anda bisa mendapatkan lokasi file dari jejak stack jika Anda menjalankan: jupyter -m notebook 2. Pada sistem saya file tersebut berada di sini: C: \ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ situs-paket \ tornado \ platform \ asyncio.py
Isaiah Hines
2
Ini tidak berhasil untuk saya Januari 2020, Python3.8 tetapi jawaban Mirwise Khan di bawah ini berhasil
Worm
32

Merevisi jawabannya pada 2019

Ubah bagian akhir file C:\Users\{USER-NAME}\AppData\Local\Programs\Python\Python38\Lib\asyncio\__init__.py

Dari

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__

Untuk

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
sumber
1
Baik pertanyaan dan jawaban yang diterima berasal dari Oktober 2019 dan solusinya bekerja untuk saya
Sundeep
2
Jawaban yang diterima tidak berhasil untuk saya. ini berhasil. Terima kasih!
Abhishek Agarwal
5
ini berfungsi untuk saya, Jan 2020, Python di Windows
cryanbhu
5
Bekerja untuk saya juga, python 3.8 pada Januari 2020
fuomag9
2
Saya tidak akan pergi dan mengubah kode sumber perpustakaan standar Python.
Martijn Pieters