Jupyter Notebook与Python 3.8-NotImplementedError

时间:2019-10-16 23:12:55

标签: python windows jupyter-notebook tornado

最近升级到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

我知道Windows上的Python 3.8默认情况下已切换为ProactorEventLoop,所以我怀疑它与此有关。

Jupyter目前不支持Python 3.8?有解决方法吗?

4 个答案:

答案 0 :(得分:106)

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

对于那些迫不及待要进行正式修复的人,我可以通过编辑文件tornado/platform/asyncio.py,并添加以下内容来使其正常工作:

import sys

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

主要进口之后。

但是,我希望对此进行正式修复。

答案 1 :(得分:1)

修订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 *
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
    __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__

答案 2 :(得分:1)

对我来说,我必须重新安装asyncio

pip install asyncio --upgrade

并升级内核包

pip install ipykernel --upgrade

答案 3 :(得分:0)

我通过将 python 版本从 3.9 更改为 3.7 解决了这个问题。 (Windows)。