vscode运行notebook的核心卡点是内核(kernel)是否真实可用且与python解释器匹配。需先选对解释器,再在该环境下执行python -m pip install ipykernel并注册内核,重启vscode后选择对应kernel;禁用远程连接、关闭冲突jupyter进程、确保两个扩展ms-python.python和ms-toolsai.jupyter均启用。

VSCode 里跑 Notebook 不是“装个插件就完事”,核心卡点永远在内核(kernel)是否真实可用、是否跟当前 Python 解释器对得上。多数报错、无响应、补全失效,根源都在这里。
内核选错了或根本没注册
右上角显示 Python 3.x.x (unavailable) 或压根不出现 kernel 下拉菜单,说明 VSCode 找不到可运行的内核——不是没装 Jupyter,而是没注册 ipykernel。
- 先确认你选中的解释器(
Python: Select Interpreter)确实是你想用的环境,比如./venv/bin/python或~/miniforge3/envs/mydata/bin/python - 在该环境下终端执行:
python -m pip install ipykernel(别跳过这步,只装jupyter不够) - 再注册内核:
python -m ipykernel install --user --name mydata --display-name "Python (mydata)"(--name不能含空格,--display-name才是下拉里看到的名字) - 重启 VSCode 窗口(不是重载窗口),打开
.ipynb后点右上角 kernel 选择器,应能看到刚注册的条目
运行单元格没反应 / 卡在 “Connecting to kernel…”
这不是界面卡死,而是内核启动失败或被远程连接逻辑劫持了。状态栏显示 “Connecting…” 超过 30 秒,基本可以断定是本地 kernel 没起来。
- 打开输出面板(
Ctrl+Shift+U),切换到Jupyter日志,找Failed to start the kernel或No module named 'ipykernel' - 检查设置里是否误开了
Jupyter: Enable Remote——关掉它,同时启用Jupyter: Local Kernel Specs Only - 如果之前手动启动过
jupyter lab或jupyter notebook,端口可能被占,VSCode 会尝试连远端失败;关掉所有已有 Jupyter 进程再试 - 首次打开或换环境后,VSCode 会静默执行
pip install ipykernel,这个过程可能卡住,别急着关,等满一分钟再看日志
补全延迟、断点不生效、变量面板空白
这些不是 Bug,是 Notebook 模式和传统 .py 文件的底层机制差异导致的——补全依赖内核返回类型信息,调试依赖 kernel namespace 实时状态,变量面板默认不自动同步。
- 补全慢 1–2 秒正常,因为要等内核响应;狂按
Ctrl+Space只会让请求堆积,更卡 - 设断点前,必须先执行过至少一次该单元格(否则 kernel 里没定义任何变量,调试器无上下文)
- 断点只对当前 cell 生效;删掉前面 cell 的
df = pd.read_csv(...),后面 cell 里df.head()仍能运行——只要 kernel 没重启 - 右侧
Variables面板在普通执行模式下是空的;想查变量,要么写print(df.shape),要么进调试模式(点击右上角虫子图标 → “Debug Cell”)
最易被忽略的一点:VSCode 的 Notebook 功能由 ms-python.python 和 ms-toolsai.jupyter 两个扩展协同提供,但它们有主次——ms-python.python 是基础,ms-toolsai.jupyter 是增强。单独装后者不装前者,或反过来禁用其中一个,都会让 kernel 列表变空、按钮消失。别贪省事跳过任一环节。











