Jupyter Notebook với Python 3.8 - NotIm HiệnedError


69

Đã nâng cấp gần đây lên Python 3.8 và đã cài đặt jupyter. Tuy nhiên, khi cố chạy jupyter notebook, gặp lỗi sau:

  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

Tôi biết Python 3.8 trên windows được chuyển sang ProactorEventLoopmặc định, vì vậy tôi nghi ngờ nó có liên quan đến điều này.

Jupyter hiện không hỗ trợ Python 3.8? Có một công việc xung quanh?


3
Python 3.8 rất mới, vì vậy tốt hơn nên quay lại 3.7 và đợi một thời gian nữa cho đến khi nó được kiểm tra tốt hơn và các mô-đun sẽ được tạo đặc biệt cho 3.8.
furas


3
vẫn bị hỏng trong 3.8.1 (phát hành ngày hôm nay).
Rick hỗ trợ Monica

1
Điều này hiện đã được sửa trong phiên bản 6.0.3 của máy tính xách tay jupyter. Nâng cấp vớipip install notebook --upgrade
drec4s

Câu trả lời:


178

BIÊN TẬP

Sự cố này tồn tại trong các phiên bản cũ hơn của Jupyter Notebook và đã được sửa trong phiên bản 6.0.3 (phát hành 2020-01-21). Để nâng cấp lên phiên bản mới nhất hãy chạy:

pip install notebook --upgrade

Theo dõi vấn đề này thông qua GitHub, có vẻ như vấn đề liên quan đến tornadomáy chủ mà jupyter sử dụng.

Đối với những người không thể chờ sửa chữa chính thức, tôi có thể làm cho nó hoạt động bằng cách chỉnh sửa tệp tornado/platform/asyncio.py, bằng cách thêm:

import sys

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

Sau khi nhập khẩu chính.

Tôi mong đợi một sửa chữa chính thức cho điều này sớm, tuy nhiên.


7
Đừng mong đợi bản sửa lỗi từ nhóm Tornado: github.com/tornadoweb/tornado/issues/2608
Andrew

9
nếu bạn đang tìm kiếm asyncio.py, hãy xem "C: \ Python3 \ Lib \ site-gói \ tornado \ platform"
Behnam Heydari

2
Cảm ơn! Nếu bạn đang sử dụng một conda env, hãy đảm bảo thay đổi phiên bản trong env và không chỉ phiên bản toàn cầu. Thứ hai, đảm bảo bạn thêm thay đổi này sau import asynciotuyên bố :)
Omri374

1
CÁi này đã sửa nó giúp tôi. Cụ thể: 1. Bạn có thể lấy vị trí tệp từ theo dõi ngăn xếp nếu bạn chạy: jupyter -m notebook 2. Trên hệ thống của tôi, tệp được đặt ở đây: C: \ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ site-gói \ tornado \ platform \ asyncio.py
Isaiah Hines

2
Điều này không hiệu quả với tôi vào tháng 1 năm 2020, Python3.8 nhưng câu trả lời của Mirwise Khan dưới đây đã làm
Worm

32

Sửa đổi câu trả lời năm 2019

Thay đổi phần cuối của tệp C:\Users\{USER-NAME}\AppData\Local\Programs\Python\Python38\Lib\asyncio\__init__.py

Từ

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__

Đến

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
Cả câu hỏi và câu trả lời được chấp nhận là từ tháng 10 năm 2019 và giải pháp đã có hiệu quả với tôi
Sundeep

2
Câu trả lời được chấp nhận đã không làm việc cho tôi. điều này đã làm Cảm ơn!
Abhishek Agarwal

5
cái này hiệu quả với tôi, tháng 1 năm 2020, Python trên Windows
cryanbhu

5
Làm việc cho tôi cũng vậy, python 3,8 vào
fuomag9

2
Tôi sẽ không đi và thay đổi mã nguồn thư viện tiêu chuẩn của Python.
Martijn Pieters
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.