vscode中jupyter notebook卡在“connecting to kernel…”主因是内核虽注册但通信失败,需验证ipykernel是否可导入、降级版本(如6.27+在windows/wsl易出socket问题)、关闭安全软件拦截,并确保注册带--user参数。

VSCode 里 Jupyter Notebook 卡在 “Connecting to kernel…”,90% 是内核注册了但通信链路断了,不是没装 ipykernel,也不是没选解释器——得先确认它能不能真正启动并说话。
内核列表里有名字却点不开:检查 ipykernel 是否真在目标环境里
右上角能看到 Python (myenv) 不代表它可用。VSCode 只是读了 kernelspec 配置,不验证路径下 Python 能不能跑起 ipykernel。
- 打开 VSCode 内置终端(
Ctrl+`),确保已激活目标环境(如conda activate myenv或source venv/bin/activate) - 运行
python -m ipykernel --version—— 有输出才说明模块可导入;没输出就立刻python -m pip install ipykernel - 别信
pip list | grep jupyter里有jupyter-core就够了,ipykernel必须单独存在且版本兼容(6.27+ 在 Windows/WSL 下易出 socket 绑定失败) - 注册命令必须带
--user:python -m ipykernel install --user --name myenv --display-name "Python (myenv)",否则可能装到系统级路径,VSCode 无权读取
点了内核就卡住不动:看 Output → Jupyter 里有没有 ModuleNotFoundError: No module named 'ipykernel'
这个报错说明内核进程启动了,但加载失败——VSCode 和内核之间用 ZeroMQ 通信,而 ipykernel 启动时依赖的底层组件(比如 pyzmq、tornado)版本不匹配,或被安全软件拦截。
- 优先降级:
python -m pip install "ipykernel(6.26.0 是目前最稳的通用版本) - 关掉杀毒软件或企业防火墙再试一次,某些软件会静默拦截
tcp://127.0.0.1:XXXXX这类本地回环连接 - 不要用管理员权限启动 VSCode:管理员模式下,内核进程无法访问用户级 socket 文件(如
~/.local/share/jupyter/runtime/下的文件) - Windows 用户若用 PowerShell 终端,检查
$env:PATH是否包含目标环境的Scripts目录;建议把 VSCode 终端默认设为 Command Prompt 或 Git Bash
连上了但 import 报错:确认 VSCode 实际加载的是哪个 python 解释器
内核名只是个标签,Python (myenv) 并不保证它用的就是你 conda activate myenv 里的包。VSCode 可能拿着一个“壳”去连,实际执行路径却是另一套。
- 在 Notebook 里运行:
import sys; print(sys.executable),对比你在命令行里which python(macOS/Linux)或where python(Windows)的结果 - 如果两者不一致,说明内核注册时用的 Python 路径和当前 VSCode 绑定的解释器路径不同——删掉
jupyter kernelspec remove myenv,然后在正确环境下重装 - 检查 VSCode 设置里有没有手动填过
python.defaultInterpreterPath,这个设置对普通.py文件有效,但对 Notebook 内核无用,反而容易干扰,建议删掉 - 别在本地 VSCode 里选 “Python 3.11 (conda)” 这种模糊项;一定要选你亲手注册的、带
(myenv)的那一项
远程内核也卡 Connecting:必须用 jupyter server,不是 jupyter notebook
VSCode 自 1.8x 起只认 jupyter_server 协议,jupyter notebook 启的服务会返回 404 或连接后秒断。
- 远程服务器上先确认:
pip show jupyter-server(不是jupyter-notebook) - 启动命令必须含
--ServerApp.allow_remote_access=True,且推荐加--ServerApp.token=''(开发机可接受) - 在 VSCode 中按
Ctrl+Shift+P→Jupyter: Specify Jupyter Server URI,粘贴jupyter server list输出的完整 URL(含?token=xxx),不能只写http://localhost:8888 - 远程服务器上的 kernel 必须提前注册好:
python -m ipykernel install --user --name myenv --display-name "Python (myenv)",VSCode 不会帮你远程装
最容易被忽略的一点:内核注册成功 ≠ 内核能通信。很多问题表面是“连不上”,实际是 ipykernel 启动后立即崩溃,日志却藏在后台进程里。务必打开 Output → Jupyter 面板,盯着它看几秒——那几行滚动的错误,才是真正的线索。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











