内核卡在“connecting to kernel…”说明进程已启动但zeromq通信失败,需先查output面板:若报modulenotfounderror则安装ipykernel,若出现zmq.error或静默超时则降级至6.26.0版本。

内核启动失败不是随机故障,而是环境链某个环节断了——从解释器路径、ipykernel 安装状态,到通信层依赖(比如 tornado),每一步都可能卡住。
内核卡在 “Connecting to kernel…” 怎么办
这说明进程已拉起,但 ZeroMQ 通信没通。不是没装 ipykernel,而是它启动了却连不上。
- 先看 Output 面板(
Ctrl+Shift+U→ 选Jupyter):如果报ModuleNotFoundError: No module named 'ipykernel',说明当前解释器里根本没装,得在目标环境里跑python -m pip install ipykernel - 如果日志里出现
zmq.error.ZMQError或静默超时,大概率是ipykernel>=6.27在 Windows/WSL 下 socket 绑定失败,直接降级:pip install "ipykernel - 杀毒软件或企业防火墙可能拦截
tcp://127.0.0.1:XXXXX这类回环连接,临时禁用测试;别用管理员权限启动 VSCode,否则 socket 文件权限错乱 - 在 WSL 中,确认
/etc/hosts有127.0.0.1 localhost,并在 VSCode 设置中启用jupyter.allowUnauthorizedRemoteConnection
选了内核却 import 报模块不存在
内核名只是个标签,VSCode 实际加载的解释器和你注册内核时用的未必是同一个——尤其在 conda 多环境 + 手动改过 python.defaultInterpreterPath 时极易错配。
- 务必通过命令面板(
Ctrl+Shift+P)执行Python: Select Interpreter,从列表里选目标环境的python可执行文件(路径要带envs/myenv/bin/python或Scripts\python.exe) - 别信右上角显示的 “Python (myenv)”——它只反映内核注册名,不验证实际解释器路径。确认方式:在 Notebook 里运行
import sys; print(sys.executable),输出必须和你选的解释器路径一致 -
python.defaultInterpreterPath这个设置对 Notebook 内核无效,反而容易干扰,建议删掉 - 如果
sys.executable指向系统 Python,说明 VSCode 根本没切到你的环境,重启 VSCode(不是重载窗口)再试
内核频繁崩溃:“Kernel died, restarting…”
这不是偶然,而是底层依赖冲突或资源耗尽的明确信号。TensorFlow、PyTorch 等大包降级常连带拖垮 tornado、typing-extensions,导致通信层失效。
- 先强制重装核心组件:
pip install --upgrade --force-reinstall jupyter jupyterlab ipykernel,覆盖所有可能被污染的模块 - 检查
tornado版本:Jupyter 通常要求tornado>=6.3;若装了 7.x 或旧版 6.1,就容易挂,用pip install "tornado>=6.3, 锁定范围 - 运行
jupyter console --kernel=python3测试内核能否独立启动——如果它也崩,问题一定出在解释器或ipykernel本身,不是前端 UI - 如果刚装完 CUDA 相关包(如
torch或tensorflow),尝试卸载后测试,确认是否驱动/ABI 不兼容触发内核进程退出
kernel.json 路径错误导致内核秒退
内核启动后立即退出(Kernel died immediately),八成是 kernel.json 里写的 Python 路径已经失效,比如虚拟环境被删、conda env 被重命名、或 Python 升级后二进制文件移动了。
- 运行
jupyter kernelspec list查看内核位置,例如 Linux/macOS 下可能是~/.local/share/jupyter/kernels/myenv - 进入该目录,用编辑器打开
kernel.json,确认"argv"数组第一项是当前环境中真实的python路径(不是软链接,不是旧版本残留路径) - 如果路径不对,手动改对;更稳妥的做法是删掉整个内核目录,然后在目标环境里重新运行
python -m ipykernel install --user --name=myenv --display-name="Python (myenv)" - 注意:Windows 用户路径含空格或括号(如
Program Files)时,argv中的python路径必须用双引号包裹,否则解析失败
最常被忽略的是:内核注册和解释器选择是两件事,且 VSCode 缓存极深;改完配置后不重启编辑器,基本等于没改。











