VSCode中Jupyter Notebook无法运行,根本原因是内核未注册到Jupyter生态:必须在目标conda/venv环境中执行python -m ipykernel install --user --name xxx --display-name "Python (xxx)",再刷新或重启Notebook;仅选解释器或装插件无效。

VSCode 里 Jupyter Notebook 跑不起来,八成不是插件没装,而是内核根本没注册到 Jupyter 生态里——jupyter kernelspec list 看不到你的环境,VSCode 就不可能选中它。
为什么右上角内核列表里没有我的 venv 或 conda 环境
VSCode 不会自动把当前打开文件夹下的 .venv 或 conda activate myenv 的状态映射为可用内核。它只读取 jupyter kernelspec list 输出的已注册内核。
- 必须先进入目标环境:比如
source .venv/bin/activate(Linux/macOS)或.venvScriptsctivate(Windows),再执行注册命令 - 运行
python -m ipykernel install --user --name myproject --display-name "Python (myproject)",其中--name是唯一标识,别用python3这类通用名,否则多个项目会冲突 - 注册后不用重启 VSCode,但要重新打开
.ipynb文件,或点击右上角内核名称刷新下拉列表 - 如果之前注册过同名内核,先删掉:
jupyter kernelspec remove myproject,再重装
Shift+Enter 没反应或报 ModuleNotFoundError
这不是快捷键失效,是当前单元格正在跑的 Python 解释器和你预期的不一致。VSCode 左上角显示的内核名(如 Python 3.11.5 ('myproject': venv))才是真实执行环境。
- 运行
import sys; print(sys.executable),确认输出路径是否指向你的.venv/bin/python或 conda env 路径 - 如果路径不对,说明内核绑定错位:可能你在 base 环境里注册了内核,却想在子环境里用;或者
settings.json里写了无效的jupyter.notebook.startup(这个配置项根本不存在,是误搜关键词) - 检查
~/.local/share/jupyter/kernels/(Linux/macOS)或%USERPROFILE%AppDataRoamingjupyterkernels(Windows)下对应--name的目录,打开kernel.json,确认argv[0]指向的是你期望的python可执行文件
如何让 VSCode 自动识别项目级 venv 并默认使用它
VSCode 不会“自动”做这事,但可以靠工作区配置 + 一次注册实现“效果上自动”。关键在于注册动作和解释器选择要对齐。
- 在项目根目录下创建
.vscode/settings.json,写入:"python.defaultInterpreterPath": "./.venv/bin/python"
(macOS/Linux)或"python.defaultInterpreterPath": ".\.venv\Scripts\python.exe"
(Windows) - 然后手动激活该 venv,运行
python -m ipykernel install --user --name myproject --display-name "Python (myproject)" - 之后每次打开该工作区,VSCode 底部状态栏会显示你设的解释器路径,右上角内核列表也会包含
Python (myproject)——点选一次后,VSCode 会记住这个选择,下次打开自动绑定 - 别依赖“Python: Select Interpreter”命令来间接影响 Notebook 内核;它只管普通
.py文件调试,和 Notebook 是两套机制
最常被跳过的一步:注册内核前没确认 jupyter 命令本身是否可用。在目标环境中跑 jupyter --version,失败就先 pip install jupyter ——只装 ipykernel 不够,VSCode 启动 notebook 时会调用 jupyter CLI 来协商通信协议。











