根本原因是未安装python和jupyter扩展,或未为所选python环境安装并注册ipykernel;需安装ms-python.python与ms-toolsai.jupyter扩展,用python: select interpreter选择环境,在该环境终端执行python -m pip install ipykernel及python -m ipykernel install --user --name xxx --display-name "python (xxx)",重启vscode后右上角选择对应内核。

为什么打开 .ipynb 文件后代码单元不运行?
VSCode 默认不自带 Jupyter 运行时,必须手动安装 Python 扩展和 Jupyter 扩展(jupyter 官方扩展),且需本地有可用的 Python 环境(含 ipykernel)。常见现象是点击“运行”按钮无反应、右上角 kernel 状态显示 “Not connected” 或报错 No Python interpreter selected。
- 确认已安装
Python扩展(Microsoft 官方)和Jupyter扩展(ID: ms-toolsai.jupyter) - 用
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(Mac)打开命令面板,输入并执行Python: Select Interpreter,选择一个含ipykernel的 Python 环境(可通过终端运行python -m pip list | grep ipykernel验证) - 若未安装
ipykernel,在选定解释器对应的终端中运行:python -m pip install ipykernel - 重启 VSCode,再打开
.ipynb文件,应能看到右上角 kernel 显示为 “Python 3.x.x” 并可运行单元
如何在 notebook 中切换 kernel 或使用 conda 环境?
VSCode 支持绑定不同 Python 环境作为 kernel,但切换依赖环境是否已注册到 Jupyter。直接在 VSCode 内选 interpreter 不等于自动注册 kernel,尤其 conda 环境常被忽略。
- 若 conda 环境未出现在 kernel 列表中,先激活该环境:
conda activate myenv - 再运行:
python -m ipykernel install --user --name myenv --display-name "Python (myenv)" - 刷新 notebook 页面(或关闭重开),点击右上角 kernel 名称,即可从下拉菜单中选择
Python (myenv) - 注意:使用
--user参数会将 kernel 安装到用户级目录;如需全局可用(多用户场景),去掉该参数并用管理员权限运行 - 已注册的 kernel 可通过
jupyter kernelspec list查看,路径中含空格或中文可能导致加载失败,建议环境名用纯英文
为什么输出图表不显示,或 matplotlib 绘图只留空白?
Jupyter 在 VSCode 中默认使用 inline 后端,但某些版本或配置下会回退到非交互式 backend,导致绘图无输出或报错 FigureCanvasAgg is non-interactive。
- 在 notebook 第一个代码单元顶部添加:
%matplotlib inline(必须单独一行,且在 import matplotlib 后、绘图前) - 若需交互式图表(如缩放、拖拽),改用:
%matplotlib widget(需提前pip install ipympl,且 kernel 重启后生效) - 避免在同一个 notebook 中混用
inline和widget,会导致后续绘图异常 - VSCode 的 Jupyter 扩展对
plotly默认支持较好,但若用fig.show()无响应,尝试改用fig.write_html("out.html")或确保已启用plotly.offline.init_notebook_mode()
如何调试 notebook 单元而不是整个脚本?
VSCode 支持对单个 code cell 设置断点并逐步调试,但需满足 kernel 支持调试协议(当前仅限 Python kernel,且要求 debugpy 已安装)。
- 确保当前 kernel 对应的 Python 环境已安装
debugpy:python -m pip install debugpy - 在目标单元内任意行左侧 gutter 点击设断点(出现红点),然后点击单元工具栏上的
Debug Cell按钮(虫子图标) - 不要用 “Start Debugging” 全局启动,那会运行整个文件而非当前 cell
- 变量查看区会实时显示当前 cell 作用域内的变量;但注意:cell 间变量不自动继承——VSCode 的 notebook 调试是按 cell 隔离执行的,上一个 cell 的变量除非已运行过,否则不可见
- 若断点失效,检查状态栏右端是否显示 “Python Debug Adapter” 正在运行;否则可能 kernel 未正确连接或
debugpy版本与 VSCode 不兼容(推荐使用debugpy>=1.6.0)
ipykernel install 这一步。别只依赖“选 interpreter”,那只是告诉 VSCode 用哪个 Python,不是告诉 Jupyter “把这个环境做成 kernel”。











