VSCode打不开.ipynb文件或显示“Python 3 (unavailable)”的根本原因是所选Python解释器环境未安装或未正确注册ipykernel:需先通过Python: Select Interpreter确认解释器路径,再在该环境终端执行python -m pip install ipykernel,然后运行python -m ipykernel install --user --name envname --display-name "Python (envname)"(--name不含空格),最后重启VS Code并手动选择内核。

VSCode 里打不开 .ipynb 文件,或右上角显示 “Python 3 (unavailable)”,基本可以确定:你选的 Python 解释器没装 ipykernel,或者装了但没注册进 Jupyter 内核列表——不是插件没装,也不是 jupyter 命令不存在,而是 VS Code 根本找不到一个能通信的 Python 内核。
右上角内核选择器为空或标着 (unavailable)
这是最常见卡点,本质是 VS Code 找到了解释器路径,但该环境里没有可启动的 kernel 进程。
- 先确认当前解释器是否选对:按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(Mac),执行Python: Select Interpreter,从列表中挑出带明确路径的项,比如./venv/bin/python或C:\Users\Me\anaconda3\envs\ds-env\python.exe;底部状态栏必须实时更新为该路径 - 打开终端(确保已激活该环境),运行
python -m pip list | grep ipykernel(macOS/Linux)或python -m pip list | findstr ipykernel(Windows);无输出就立刻执行python -m pip install ipykernel - 注册命令必须带
--user:例如python -m ipykernel install --user --name ds-env --display-name "Python (ds-env)";--name不能含空格或中文,否则静默失败;--display-name才是你在下拉菜单里看到的名字 - 注册后路径固定在:
~/.local/share/jupyter/kernels/(Linux/macOS)或%USERPROFILE%\AppData\Roaming\jupyter\kernels\(Windows);VS Code 只读这个位置,漏掉--user就可能写到系统级目录,它读不到
选对了解释器,但 Shift+Enter 没反应或报 ModuleNotFoundError
这不是快捷键坏了,是 Notebook 当前绑定的 kernel 和你预期的环境不一致。VS Code 左上角显示的内核名(如 Python 3.11.5 ('ds-env': conda))才是真实执行环境,跟当前打开的 .py 文件或文件夹无关。
- 点击右上角内核名称,手动从下拉列表中选中你刚注册的那个(带
--display-name的那个) - 如果目标环境没出现在列表里,说明它没注册成功:进该环境终端,再跑一遍
python -m ipykernel install --user --name ds-env --display-name "Python (ds-env)" - 运行
import sys; print(sys.executable)确认输出路径是否指向你的虚拟环境,比如./venv/bin/python;不对就说明 kernel 绑错位置了 - 别依赖
conda install ipykernel:某些镜像源会装旧版或缺依赖;统一用python -m pip install ipykernel更稳
内核注册成功了,但 Notebook 卡在 “Connecting to kernel…”
VS Code 正在尝试连接远程 Jupyter Server,而非本地已注册的 kernel。这是默认行为被误触发的典型表现。
- 打开设置(
Ctrl+,),搜索jupyter: enable remote,关闭Jupyter: Enable Remote - 同时启用
Jupyter: Local Kernel Specs Only,强制只读取本地kernels/目录下的定义 - 检查工作区设置(
.vscode/settings.json)里有没有"jupyter.jupyterServerType": "remote"或"jupyter.remoteJupyterServerUri",有就删掉 - 禁用所有非官方 Jupyter 类扩展(比如第三方 jupyter-server-proxy 插件),只留
ms-toolsai.jupyter和ms-python.python
真正容易被忽略的是:VS Code 不继承终端里的 conda activate 状态,也不自动扫描项目下的 .venv;它只认你点选的那个解释器路径下的包。哪怕 jupyter kernelspec list 能看到你的内核,只要 argv[0] 指向的 python 可执行文件路径和 VS Code 当前选中的解释器不一致,就会错位执行。注册完务必验证 kernel.json 里的路径,而不是只看名字。


















