VS Code需通过Python扩展和Jupyter扩展组合实现Notebook功能,关键在于准确绑定Python环境并安装jupyter、ipykernel,正确注册内核,配置服务启动与matplotlib后端以确保运行、渲染及调试正常。

VS Code 本身不内置 Jupyter 支持,但通过官方 Python 扩展 + Jupyter 扩展组合,能提供接近原生 Notebook 的体验——关键在于环境绑定和内核识别是否准确,而不是“装了就能用”。
确认 Python 环境已正确安装并可被 VS Code 识别
VS Code 的 Jupyter 功能依赖于一个可用的 Python 解释器及其附带的 jupyter 包。如果 jupyter 不在该环境里,Notebook 单元会报错 ModuleNotFoundError: No module named 'jupyter' 或直接无法启动内核。
- 打开命令面板(
Ctrl+Shift+P/Cmd+Shift+P),运行Python: Select Interpreter,确保选中的是你实际用于数据分析的环境(如~/miniconda3/envs/ds或./venv) - 在该环境下终端中执行:
python -m pip list | grep jupyter
,确认输出包含jupyter、ipykernel(后者是内核通信必需) - 若缺失,不要全局安装,而是在当前选中的解释器下运行:
python -m pip install jupyter ipykernel
- 安装后建议显式注册内核:
python -m ipykernel install --user --name ds-env --display-name "Python (ds-env)"
,这样在 Notebook 顶部 kernel 切换菜单里能明确看到该环境
打开 .ipynb 文件时内核显示 “Not Connected” 或反复卡在 “Starting Jupyter Server”
这是最常被忽略的配置断点:VS Code 默认尝试启动本地 jupyter server,但如果系统 PATH 中存在多个 Python 版本或 conda/mamba 环境混杂,它可能找不到正确的 jupyter 可执行文件,或启动后端口被占用/权限不足。
- 先检查 VS Code 设置中是否禁用了自动服务:
jupyter.askForKernelRestart和jupyter.alwaysShowJupyterOutput建议设为true,便于观察启动日志 - 在设置中搜索
jupyter.defaultKernelSpecName,留空即可,避免硬编码冲突;真正起作用的是你手动选择的 kernel(右上角下拉菜单) - 若长期卡住,关闭所有 VS Code 窗口,终端中运行
jupyter notebook --port=8888 --no-browser
,再回 VS Code 打开.ipynb,它会自动连接已运行的服务(需开启设置jupyter.allowUnauthorizedRemoteConnection) - Windows 用户注意:杀毒软件或防火墙有时会拦截
ipykernel进程通信,临时禁用测试是否改善
代码补全、变量查看、Plot 输出不显示或 Matplotlib 图形模糊
这些不是 Notebook 功能缺陷,而是内核与前端渲染链路中的典型兼容性问题,尤其涉及 matplotlib 后端和 VS Code 内置 WebView 渲染限制。
- 确保在 Notebook 第一个单元运行:
%matplotlib inline
(非widget或notebook,后者需要额外扩展且不稳定) - 图形模糊?在绘图前加:
import matplotlib as mpl; mpl.rcParams['figure.dpi'] = 144
,VS Code WebView 默认渲染分辨率偏低 - 变量面板(Variables view)不更新?确认单元已成功运行(右上角 kernel 状态为 “Idle”,而非 “Busy” 或 “Disconnected”),且变量未定义在函数内部(局部变量不可见)
- 补全失效?检查当前 kernel 是否与你
import的包一致——比如你在conda env里装了pandas,但 kernel 选的是系统 Python,自然没有补全
真正卡住人的往往不是“怎么装”,而是“为什么这个单元跑不通”——多数时候是因为 kernel 没绑对环境,或者 ipykernel 版本和 jupyter 不匹配(例如 ipykernel >6.0 需要 jupyter-client >7.0)。每次换环境,重装 ipykernel 并重新注册,比反复重启 VS Code 更有效。










