【问题标题】:Jupyter notebook cannot start with python 3.8 in Windows 10 [duplicate]Jupyter Notebook 无法在 Windows 10 中使用 python 3.8 启动 [重复]
【发布时间】:2019-07-15 06:09:54
【问题描述】:

这里是使用 python 3.8 版启动 jupyter notebook 时的详细错误

  File "c:\users\kokat\appdata\local\programs\python\python38\lib\runpy.py", line 192, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\kokat\appdata\local\programs\python\python38\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\kokat\AppData\Local\Programs\Python\Python38\Scripts\jupyter-notebook.EXE\__main__.py", line 9, in <module>
  File "c:\users\kokat\appdata\local\programs\python\python38\lib\site-packages\jupyter_core\application.py", line 266, in launch_instance
    return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)
  File "c:\users\kokat\appdata\local\programs\python\python38\lib\site-packages\traitlets\config\application.py", line 657, in launch_instance
    app.initialize(argv)
  File "<c:\users\kokat\appdata\local\programs\python\python38\lib\site-packages\decorator.py:decorator-gen-7>", line 2, in initialize
  File "c:\users\kokat\appdata\local\programs\python\python38\lib\site-packages\traitlets\config\application.py", line 87, in catch_config_error
    return method(app, *args, **kwargs)
  File "c:\users\kokat\appdata\local\programs\python\python38\lib\site-packages\notebook\notebookapp.py", line 1628, in initialize
    self.init_webapp()
  File "c:\users\kokat\appdata\local\programs\python\python38\lib\site-packages\notebook\notebookapp.py", line 1407, in init_webapp
    self.http_server.listen(port, self.ip)
  File "c:\users\kokat\appdata\local\programs\python\python38\lib\site-packages\tornado\tcpserver.py", line 144, in listen
    self.add_sockets(sockets)
  File "c:\users\kokat\appdata\local\programs\python\python38\lib\site-packages\tornado\tcpserver.py", line 157, in add_sockets
    self._handlers[sock.fileno()] = add_accept_handler(
  File "c:\users\kokat\appdata\local\programs\python\python38\lib\site-packages\tornado\netutil.py", line 268, in add_accept_handler
    io_loop.add_handler(sock, accept_handler, IOLoop.READ)
  File "c:\users\kokat\appdata\local\programs\python\python38\lib\site-packages\tornado\platform\asyncio.py", line 79, in add_handler
    self.asyncio_loop.add_reader(
  File "c:\users\kokat\appdata\local\programs\python\python38\lib\asyncio\events.py", line 498, in add_reader
    raise NotImplementedError
NotImplementedError

任何帮助将不胜感激。

【问题讨论】:

标签: python-3.x jupyter-notebook tornado


【解决方案1】:

Jupyter notebook 作为tornado web 服务器运行。您的浏览器通过套接字连接到此龙卷风服务器。

socket 的 I/O 由 tornado 的 asyncio 处理,它依赖于 python 运行时本机 asyncio 模块的 add_reader 实现。正如asynciodocumentation 中所指出的,这种方法仅支持Windows SelectorEventLoop,因此请确保在python 安装中使用这种事件循环。要找出正在使用的事件循环实现,您可以在 python shell 中运行以下命令:

import asyncio
print(asyncio.get_event_loop().__class__)
# Output: <class 'asyncio.windows_events._WindowsSelectorEventLoop'>

关于允许用户在 jupyter 的配置文件中更改 asyncio 的 EventLoopPolicy 正在进行中的 discussion

【讨论】:

    【解决方案2】:

    按照this thread 中的一个cmets,我通过以下方式解决了问题:

    1. 找到并打开 asyncio.py 文件。就我而言,它位于C:\Users\[USERNAME]\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\tornado\platform\
    2. import asyncio 行之后添加以下内容:
    from sys import platform 
    if platform == "win32":               
        asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) # python-3.8.0a4
    

    这将强制在 Windows 上使用 SelectorEventLoop。

    【讨论】:

    • 这个答案也给出了here - 虽然1)链接的问题实际上是更新的,因此这里是这个问题的欺骗和2)它甚至不是jupyter问题,它是由龙卷风引起的问题。
    • 请注意,路径可能因您的安装而异,例如我基于 anaconda 的安装和环境。我必须调整 asyncio.py 文件 @ C:\Users\[USERNAME]\Anaconda3\envs\[ENVIRONMENT NAME]\Lib\site-packages\tornado\platform。如果您使用基于 vscode 的设置启动 jupyter 服务器作为解释器,您也可能会遇到此错误(目前仅使用 python 3.8)。
    • 这对我来说有 0 个变化
    • 您可以并且可能应该在您自己的程序文件中执行此操作。这样您就不需要依赖另一个模块的自定义修改。
    猜你喜欢
    • 2019-08-15
    • 1970-01-01
    • 2020-07-03
    • 2020-07-28
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    相关资源
    最近更新 更多