vs code运行jupyter notebook的核心是选对python环境并连通内核:必须安装官方jupyter扩展(ms-toolsai.jupyter)和python扩展,确认解释器路径后在目标环境执行python -m ipykernel install --user --name envname --display-name "python (envname)",重启vs code并手动选择内核。

Jupyter Notebook 在 VS Code 中打开并运行,核心不是“能不能”,而是“选对环境、连对内核”。只要 Python 环境里装了 jupyter 和 ipykernel,VS Code 就能跑起来——但很多人卡在第一步:点开 .ipynb 文件后,右下角显示 “No kernel” 或单元格运行按钮灰掉。
为什么双击 .ipynb 文件没反应?
VS Code 默认不把 .ipynb 当作可执行文件处理,除非装了 Jupyter 扩展(ID:ms-toolsai.jupyter)且已激活。常见现象包括:
- 文件以纯文本形式打开,全是 JSON 格式乱码
- 顶部工具栏没有“Run Cell”按钮
- 右下角状态栏不显示 Python 版本或“Select Kernel”
解决办法只有两个:装扩展 + 重启 VS Code(不是重载窗口)。扩展必须是官方 ms-toolsai.jupyter,第三方 Jupyter 插件可能缺失内核发现逻辑。
Python 解释器选错,kernel 就永远连不上
VS Code 的 Jupyter 功能依赖底层 Python 环境提供 ipykernel。如果你只装了 jupyter,但没装 ipykernel,或者装在 A 环境,却在 VS Code 里选了 B 环境,就会报错:No Python interpreter is selected 或 Kernel died。
确认和修复步骤:
- 在 Linux/macOS/WSL 终端中,激活目标环境后执行:
python -m ipykernel install --user --name myenv --display-name "Python (myenv)" - 在 VS Code 中按
Ctrl+Shift+P,输入Python: Select Interpreter,选中你刚注册的那个环境(路径里含myenv或conda字样) - 再打开
.ipynb文件,右下角应显示类似Python (myenv),点击它可手动切换内核
注意:--user 参数必须加,否则内核注册到系统级位置,普通用户权限不可见。
远程内核(比如 WSL 或 Linux 服务器)连不上?看 token 和端口
你在 WSL 里启动了 jupyter notebook --no-browser --port=8888,但 VS Code Windows 版提示 “Failed to connect to server”,大概率是 URL 里的 ?token=xxx 没粘对,或端口被 Windows 防火墙拦截。
实操要点:
- 启动时用完整命令:
jupyter notebook --no-browser --port=8888 --ip=0.0.0.0 --allow-root(--ip=0.0.0.0允许外部访问,--allow-root是 WSL root 用户必需) - 复制终端输出的整行 URL(含
token=后面那串字符),粘贴到 VS Code 的 “Connect to Jupyter Server” 输入框里 - Windows 防火墙要放行端口 8888(或你自定义的端口),否则连接会超时
别信“localhost:8888”——WSL 的 localhost ≠ Windows 的 localhost,必须用真实 IP 或 127.0.0.1 加 token。
单元格运行后没输出,或者图表不渲染?
这通常不是代码问题,而是内核状态或渲染器没加载。典型表现:print("hello") 不打印,plt.show() 出不来图,但控制台也没报错。
优先检查这几项:
- 右上角内核选择器是否显示绿色“Connected”,而不是黄色“Starting”或红色“Disconnected”
- 单元格左侧行号旁有没有正在运行的动画圆点?没有说明根本没提交给内核
- 是否误点了“Interrupt Kernel”?中断后需手动点“Restart Kernel”再运行
- Matplotlib 图表默认用
inline后端,但某些 Conda 环境里缺matplotlib-inline,补装:pip install matplotlib-inline
最易被忽略的一点:VS Code 的 Jupyter 渲染器依赖 webview,如果禁用了硬件加速(比如在远程桌面或某些 Linux 发行版上),图表区域可能空白——这时试试在命令面板里运行 Jupyter: Restart Kernel and Re-run All Cells。











