VSCode中jupyter.notebook.startup设置不存在,真正起作用的是内核选择机制;需通过python -m ipykernel install显式注册内核,并手动在右上角选择对应环境,且禁用外部Jupyter服务以避免端口冲突。

VSCode 安装 Jupyter 扩展后 jupyter.notebook.startup 不生效?
VSCode 的 Jupyter 支持不依赖全局 Python 环境自动识别,而是靠扩展显式选择内核。如果你改了 settings.json 里的 jupyter.notebook.startup,但新建 Notebook 还是弹默认内核,说明配置没走对路——这个设置根本不存在,是常见误搜关键词。
真正起作用的是内核选择机制,不是启动参数。VSCode 启动 Notebook 时只做两件事:加载已安装的 jupyter 可执行文件(或 ipykernel),然后列出当前 Python 环境中注册的所有内核。
- 确认
jupyter命令在终端可用:which jupyter(macOS/Linux)或where jupyter(Windows) - 检查内核是否注册:
jupyter kernelspec list,输出里要有类似python3 /Users/xxx/Library/Jupyter/kernels/python3的条目 - 如果用 conda 环境,先激活它,再运行
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
为什么 Shift+Enter 执行单元格没反应,或报 ModuleNotFoundError?
这不是快捷键坏了,是当前 Notebook 绑定的 Python 内核和你期望的环境不一致。VSCode 左上角显示的内核名称(比如 Python 3.11.5 ('base': conda))才是真实执行环境,跟当前打开的 .py 文件或文件夹无关。
常见错位场景:你在项目根目录下用 venv 装了 pandas,但 Notebook 默认连的是系统 Python 或 base conda 环境,自然找不到包。
- 点击右上角内核名称,从下拉列表中手动选中你实际想用的环境(带
--user或具体 env 名的那个) - 如果目标环境没出现在列表里,说明它没注册内核:进该环境,运行
python -m ipykernel install --user --name project-env --display-name "Python (project-env)" - 别依赖 VSCode 自动“检测工作区 Python”,它只影响普通 .py 文件调试,不影响 Notebook 内核绑定
如何让 Notebook 自动使用项目根目录下的 venv/.venv?
VSCode 不会自动把 .venv 映射为 Notebook 内核,必须显式注册。而且注册一次后,只要路径不变,后续打开同项目就可复用,不用每次重装。
关键点在于:注册命令要进虚拟环境执行,且 --name 最好用项目名(避免多个 .venv 冲突),--display-name 是你在 VSCode 下拉菜单里看到的名字。
- 终端进入项目根目录:
cd /path/to/my-project - 激活虚拟环境:
source .venv/bin/activate(macOS/Linux)或.venv\Scripts\activate(Windows) - 注册内核:
python -m ipykernel install --user --name my-project --display-name "Python (my-project)" - 重启 VSCode 或刷新内核列表(Cmd/Ctrl+Shift+P →
Jupyter: Refresh Kernel List)
jupyter-server 和 notebook 启动方式混用导致端口冲突?
VSCode 默认用 jupyter-server(JupyterLab 3+ 的后端),而不是老的 jupyter notebook。如果你手动在终端跑了 jupyter notebook,它会占 8888 端口;而 VSCode 启动 Notebook 时可能尝试连同一端口,结果卡住或报 Connection refused。
VSCode 不需要你提前启动服务,它内部调用 jupyter-server 并管理生命周期。手动启服务反而干扰它。
- 关掉所有终端里跑着的
jupyter notebook或jupyter lab进程 - 检查是否有残留进程:
lsof -i :8888(macOS/Linux)或netstat -ano | findstr :8888(Windows) - VSCode 设置里禁用外部服务选项:
"jupyter.jupyterServerType": "local"(默认值,别改成remote) - 如果真要用远程 server,务必用
jupyter-server启动,不是jupyter notebook
内核注册、环境绑定、服务启动这三步,每一步断掉都会让 Notebook 表现异常。最常被跳过的其实是「激活环境后再注册内核」——人总想图省事直接在 base 里装,结果数据科学包全装错了地方。










