具有Python 3.8的Jupyter Notebook-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

我知道ProactorEventLoop默认情况下Windows上的Python 3.8已切换为默认设置,因此我怀疑它与此相关。

Jupyter目前不支持Python 3.8?有没有解决的办法?


3
Python 3.8非常新鲜,因此最好回到3.7,等待一段时间,直到对其进行更好的测试,并专门为3.8创建模块。
furas


3
仍在3.8.1(今天发布)中打破。
瑞克

1
现在,在jupyter Notebook 6.0.3版中已修复此问题。使用pip install notebook --upgrade
drec4s进行

Answers:


178

编辑

此问题存在于较旧的Jupyter Notebook版本中,并已在6.0.3版(2020年1月21日发行)中修复。要升级到最新版本,请运行:

pip install notebook --upgrade

通过GitHub解决此问题后,问题似乎与tornadojupyter使用的服务器有关。

对于那些迫不及待要进行正式修复的人,我可以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语句后添加此更改:)
Omri374 '19

1
这为我解决了。特别是:1.如果运行,则可以从堆栈跟踪中获取文件位置:jupyter -m notebook 2.在我的系统上,文件位于:C:\ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ site-packages \ tornado \ platform \ asyncio.py
Isaiah Hines

2
2020年1月,这对我不起作用,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十月和解决方案为我
森迪普•

2
接受的答案对我不起作用。做到了。谢谢!
Abhishek Agarwal

5
这对我
有用

5
对我也
有用

2
不会去更改Python的标准库源代码。
马丁·彼得斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.