VSCode中Jupyter Notebook无法运行,90%因内核未注册或选错环境;需在目标环境执行python -m ipykernel install注册,重启VSCode后手动选择右上角内核,而非依赖底部Python解释器选择。

VSCode 里 Jupyter Notebook 跑不起来,90% 是内核没注册或选错了环境,不是插件没装好,也不是 Python 没装对。
为什么 Shift+Enter 没反应、单元格灰色、右上角没内核可选
这不是快捷键失效,是 VSCode 根本没找到可用的 ipykernel 实例。Jupyter 扩展只负责渲染和调度,真正执行代码的是你本地 Python 环境里注册的 kernel —— 它和 jupyter 命令是否可用无关,只认 ipykernel 是否安装并显式注册过。
- 先在终端激活目标环境:
conda activate ds或source venv/bin/activate - 运行:
python -m ipykernel install --user --name ds --display-name "Python (ds)" - 重启 VSCode(必须),再打开
.ipynb文件,点击右上角内核选择器 - 如果仍不显示,运行
jupyter kernelspec list看输出里有没有ds对应的路径;路径含空格或中文会注册失败
选了解释器,但 Notebook 还是连错环境
VSCode 底部状态栏选的 Python: Select Interpreter 只影响普通 .py 文件调试和补全,对 .ipynb 文件完全无效。Notebook 的执行环境只由右上角内核选择器决定,两者可以完全不同。
- 你在项目里用
venv/.venv装了pandas,但 Notebook 默认连的是系统 Python → 报ModuleNotFoundError - 解决方法:点击右上角内核名,从下拉列表中手动选中你注册过的那个(比如
Python (ds)) - 如果列表里没有,说明该环境没注册 kernel,回到上一步操作
- 别指望 VSCode 自动把工作区里的
.venv映射为内核——它不会猜,你得明说
# %% 分隔的 .py 文件比 .ipynb 更适合日常探索
Git 协作时 .ipynb 文件一保存就产生大量 JSON 差异(输出、metadata、cell id),而 # %% 分隔的纯文本 .py 文件可 diff、可 review、无冲突风险,还能享受 Notebook 式交互体验。
- 新建
explore.py,写两段代码,中间加# %% - 光标放在任一段内,按
Shift+Enter,VSCode 自动开交互式窗口执行 - 变量自动进 Variables 面板,
DataFrame双击展开表格,图表直接渲染 - 不会意外保存输出污染文件,kernel 重启也不丢上下文(因为没存输出)
Matplotlib / Plotly 图表不显示或卡住
图表渲染依赖内核后端和 VSCode 输出通道,不是库没装对。常见于远程连接、conda 环境未启用 GUI 后端、或内核卡在阻塞调用中。
- 确保已安装:
pip install matplotlib plotly(在当前 kernel 环境里) - Matplotlib 默认后端可能不兼容,加一行:
import matplotlib; matplotlib.use('Agg')再import matplotlib.pyplot as plt - Plotly 需启用离线模式:
import plotly.io as pio; pio.renderers.default = 'vscode' - 如果图表区域空白但控制台无报错,检查右下角状态栏是否显示 “Kernel is busy” —— 可能前一个 cell 死循环或等待输入
最常被忽略的点:内核注册是一次性动作,但环境路径变了(比如重装 conda、移动项目)、或用了新创建的 venv,就得重新注册;VSCode 不会主动同步这些变化,也不会提醒你。


















