解决 “Timed out waiting to get a heartbeat from kernel process“ 问题

背景

在vscode中使用ipython和jupyter notebook

问题

vscode右上角python状态总是显示busy,vscode在尝试连接ipykernel时 超时连不上,并显示Timed out waiting to get a heartbeat from kernel process错误

环境

VsCode版本:1.52.1
Jupyter插件:2020.12.414227025
Python插件:2020.12.424452561
ipykernel:最新的

原因

我遇到的问题应该是 包依赖问题 (个人推测)。这里原因可能各有不同,在Github的VsCode页面下有人提到可能有多种原因会导致该问题:插件bug、用户名字符问题等。我之前是可以在vscode中正常使用jupyter的,但是昨天突然就用不了了,总是报错Timed out waiting to get a heartbeat from kernel process。试了很多办法都不行(当然,没有重装anaconda,也没有重装系统)。整了几个小时,最后在stackoverflow下看到了一个没有点赞的回答,说是执行conda install ipykernel就好了,抱着死马当活马医的心态试了下,居然好了……

解决方法

使用conda install ipykernel更新相关的依赖包,或是把当前出问题的虚拟环境删除重新创建

问题到底在哪?

出问题的那天,早上我在写FastAPI项目时,安装了几个包(其中包括:aiofiles),然后晚上在vscode中使用jupyter时就遇到了这个问题……直到在执行了conda install ipykernel之后才恢复,我发现执行这条命令时只有一个包被更新了: chardet。ipykernel依赖4.0.0(大概就是这么个意思)以上的包,但是那天早上做FastAPI开发时安装的那几个包里面有依赖chardet 3.*的,导致ipykernel依赖的高版本cherdet被覆盖,进一步导致了该问题。
可很奇怪的是:Vscode中,一个虚拟环境出现了这个问题导致其他虚拟环境中的ipykernel也无法连接上,但是单独使用其他虚拟空间中的jupyter(网页版那个)不会有问题……推测可能是影响到了vscode或是jupyper插件什么的

进一步猜测

查了一下,chardet是用来处理字符的,那么最终是否还是由字符引起的问题,比如跟我一样用的中文用户名……又或是用户名中有空格(Github上一个用户曾提到他把用户名中的空格去掉后就好了……)

最后

以上全是我个人的经历和猜测,对你不一定适用。
具体到底是怎么回事我也不是很清楚,也懒得去追究……

其他可能有用的方法

https://stackoverflow.com/questions/63146155/python-jupyter-ipynb-vscode

https://github.com/microsoft/vscode-jupyter/issues/582

https://github.com/microsoft/vscode-jupyter/issues/785

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值