Windows11下Python内核Jupyter Notebook无法打开,排查后求助
问题描述
- 系统:Windows 11
- 症状:安装全新Anaconda后,Jupyter Notebook无法打开Python内核的笔记本,Chrome和Edge浏览器均出现该问题
- 已尝试的解决方法:
- 卸载重装Anaconda
- 更新Jupyter
- 测试新建笔记本
- 创建全新conda环境
错误日志
(base) C:\Users\info>jupyter notebook [I 2022-08-28 20:34:08.379 LabApp] JupyterLab扩展已从C:\Users\info\anaconda3\lib\site-packages\jupyterlab加载 [I 2022-08-28 20:34:08.379 LabApp] JupyterLab应用程序目录为C:\Users\info\anaconda3\share\jupyter\lab [I 20:34:08.384 NotebookApp] 从本地目录提供笔记本服务:C:\Users\info [I 20:34:08.384 NotebookApp] Jupyter Notebook 6.4.8 运行于: [I 20:34:08.384 NotebookApp] http://localhost:8888/?token=c807506f35308673e826bffac9193f7fe551a92a0e1c67de [I 20:34:08.385 NotebookApp] 或 http://127.0.0.1:8888/?token=c807506f35308673e826bffac9193f7fe551a92a0e1c67de [I 20:34:08.385 NotebookApp] 使用Control-C停止服务器并关闭所有内核(按两次跳过确认)。 [C 20:34:08.425 NotebookApp] 要访问笔记本,请在浏览器中打开此文件: file:///C:/Users/info/AppData/Roaming/jupyter/runtime/nbserver-4468-open.html 或者复制粘贴以下URL之一: http://localhost:8888/?token=c807506f35308673e826bffac9193f7fe551a92a0e1c67de 或 http://127.0.0.1:8888/?token=c807506f35308673e826bffac9193f7fe551a92a0e1c67de [W 20:34:08.549 NotebookApp] 404 GET /api/kernels/ce107385-7d51-45a6-8222-88f5d792c01b/channels?session_id=02de077cc1b6404d8537c297bbbccf4d (127.0.0.1): 内核不存在:ce107385-7d51-45a6-8222-88f5d792c01b [W 20:34:08.563 NotebookApp] 404 GET /api/kernels/ce107385-7d51-45a6-8222-88f5d792c01b/channels?session_id=02de077cc1b6404d8537c297bbbccf4d (127.0.0.1) 14.950000ms 来源页:无 [W 20:34:14.725 NotebookApp] 笔记本Untitled1.ipynb不受信任 [I 20:34:14.793 NotebookApp] 内核已启动:152ee412-debd-4785-a2be-3b6f5831d7e2,名称:python3 回溯(最近的调用最后): 文件 "C:\Users\info\anaconda3\lib\runpy.py", 第197行, 在 _run_module_as_main return _run_code(code, main_globals, None, 文件 "C:\Users\info\anaconda3\lib\runpy.py", 第87行, 在 _run_code exec(code, run_globals) 文件 "C:\Users\info\AppData\Roaming\Python\Python39\site-packages\ipykernel_launcher.py", 第16行, 在 <module> app.launch_new_instance() 文件 "C:\Users\info\anaconda3\lib\site-packages\traitlets\config\application.py", 第846行, 在 launch_instance app.start() 文件 "C:\Users\info\AppData\Roaming\Python\Python39\site-packages\ipykernel\kernelapp.py", 第477行, 在 start ioloop.IOLoop.instance().start() 文件 "C:\Users\info\AppData\Roaming\Python\Python39\site-packages\tornado\platform\asyncio.py", 第199行, 在 start self.asyncio_loop.run_forever() 文件 "C:\Users\info\anaconda3\lib\asyncio\windows_events.py", 第319行, 在 run_forever assert self._self_reading_future is None AssertionError
解决方案
日志中的AssertionError是Windows 11环境下Python asyncio模块与tornado版本冲突导致的已知兼容性问题,可尝试以下解决方法:
方法1:降级tornado版本
在conda环境中执行命令:
conda install tornado==6.1
方法2:设置asyncio策略环境变量
启动Jupyter Notebook前,先设置环境变量强制使用选择器事件循环:
set PYTHONASYNCIODEBUG=0 set asyncio_event_loop_policy=WindowsSelectorEventLoopPolicy jupyter notebook
也可将这两行环境变量设置添加到Anaconda Prompt的启动脚本,避免每次手动输入。
方法3:修改ipykernel启动代码
找到日志中路径对应的ipykernel_launcher.py文件,在文件开头添加以下代码:
import asyncio from asyncio import WindowsSelectorEventLoopPolicy asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())
保存后重新启动Jupyter Notebook即可。
内容的提问来源于stack exchange,提问作者Shalom
相关产品推荐
相关产品推荐

