โน๊ตบุ๊ค 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 ในขณะนี้? มีวิธีแก้ไขไหม?


3
Python 3.8 มีความสดมากดังนั้นให้กลับไปที่ 3.7 และรอสักครู่จนกว่ามันจะผ่านการทดสอบที่ดีขึ้นและโมดูลจะถูกสร้างขึ้นเป็นพิเศษสำหรับ 3.8
furas


3
ยังขาดอยู่ใน 3.8.1 (เปิดตัวในวันนี้)
Rick สนับสนุนโมนิก้า

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())

หลังจากการนำเข้าหลัก

ฉันคาดว่าจะมีการแก้ไขอย่างเป็นทางการสำหรับเรื่องนี้ในไม่ช้า


7
อย่าคาดหวังการแก้ไขจากทีมทอร์นาโด: github.com/tornadoweb/tornado/issues/2608
Andrew

9
หากคุณกำลังมองหา asyncio.py ลองดูที่ "C: \ Python3 \ Lib \ site-packages \ tornado \ platform"
Behnam Heydari

2
ขอบคุณ! หากคุณใช้ conda env ตรวจสอบให้แน่ใจว่าได้เปลี่ยนเวอร์ชันใน env ไม่ใช่เฉพาะโกลบอลเท่านั้น ประการที่สองตรวจสอบให้แน่ใจว่าคุณได้เพิ่มการเปลี่ยนแปลงนี้หลังจากimport asyncioข้อความสั่ง :)
23424

1
สิ่งนี้แก้ไขได้สำหรับฉัน โดยเฉพาะอย่างยิ่ง: 1. คุณสามารถรับตำแหน่งไฟล์จากการติดตามสแต็กหากคุณเรียกใช้: jupyter -m notebook 2. ในระบบของฉันไฟล์จะอยู่ที่นี่: C: \ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ site-packages \ tornado \ platform \ asyncio.py
Isaiah Hines

2
สิ่งนี้ไม่ได้ผลสำหรับฉันในเดือนมกราคม 2020, Python3.8 แต่คำตอบของ Mirwise Khan ด้านล่างนี้
Worm

32

แก้ไขคำตอบในปี 2562

เปลี่ยนส่วนท้ายของไฟล์ 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
ทั้งคำถามและคำตอบที่ยอมรับนั้นมาจากตุลาคม 2562 และวิธีแก้ปัญหานี้ใช้ได้สำหรับฉัน
ซันเดพ

2
คำตอบที่ยอมรับไม่ได้ผลสำหรับฉัน สิ่งนี้ทำ ขอบคุณ!
Abhishek Agarwal

5
สิ่งนี้ใช้ได้กับฉัน Jan 2020, Python บน Windows
cryanbhu

5
ทำงานให้ฉันด้วยหลาม 3.8 ในมกราคม 2020
fuomag9

2
ฉันจะไม่ไปแก้ไขซอร์สโค้ดไลบรารีมาตรฐานของไพ ธ อน
Martijn Pieters
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.