根本原因是内核未注册或路径不匹配:vscode不自动扫描conda/venv环境,须手动运行python -m ipykernel install注册内核至jupyter kernels目录,且需用pip而非conda安装ipykernel以避免版本缺陷;注册后必须重启vscode才能生效。

VSCode 里 Jupyter 内核不出现、选了却连不上、显示 unavailable——根本原因不是插件没装,而是内核没被正确注册或路径没对齐。
为什么右上角“Select Kernel”下拉列表是空的
VSCode 的 Jupyter 扩展不会自动扫描 conda 或 venv 环境里的 Python,它只读取 ~/.local/share/jupyter/kernels/(Linux/macOS)或 %USERPROFILE%\AppData\Roaming\jupyter\kernels\(Windows)目录下已注册的 kernel。即使你 conda activate myenv 并装了 jupyter,只要没运行 python -m ipykernel install,VSCode 就看不见它。
常见错误现象:
- 内核列表只有
Python 3 (system)或干脆为空 - 点了
Select Interpreter选了环境,但内核列表不变 - 用
conda install ipykernel后内核启动失败(报错类似ModuleNotFoundError: No module named 'ipykernel')
实操建议:
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
- 先在目标环境中运行:
python -m pip install ipykernel(别用conda install,镜像源容易装旧版或缺依赖) - 再执行注册命令:
python -m ipykernel install --user --name myenv --display-name "Python (myenv)" - 确认注册成功:检查
~/.local/share/jupyter/kernels/myenv/kernel.json是否存在,且argv[0]指向该环境的python路径 - 重启 VSCode(不是重载窗口),再打开
.ipynb文件
选了内核却卡在 “Connecting to kernel…”
这说明 VSCode 找到了 kernel 描述文件,但启动进程失败。常见原因是 ipykernel 版本兼容性、权限冲突或 socket 绑定异常。
实操建议:
- 降级
ipykernel:在对应环境中运行pip install "ipykernel(6.27+ 在部分 Windows/WSL 下有 socket 问题) - 不要用管理员权限启动 VSCode——会导致内核无法访问用户级 socket 文件
- 检查终端是否报错:
PermissionError: [Errno 13] Permission denied或OSError: [Errno 98] Address already in use,前者关掉管理员模式,后者换端口或杀残留进程 - 如果用了 WSL,确保
/tmp可写,且没有挂载限制
明明选了 myenv,import 却报模块不存在
内核名只是个标签,--display-name 不保证实际执行路径和你预期一致。VSCode 可能加载了别的 Python 解释器,尤其是当你同时设置了左下角的 Python Interpreter 和右上角的 Kernel 时,二者可以不同。
实操建议:
- 在 notebook 单元格中运行:
import sys; print(sys.executable),确认输出路径是否匹配你的 conda/venv 环境 - 如果不对,先用命令面板运行
Python: Select Interpreter,手动指向./envs/myenv/bin/python(macOS/Linux)或.\envs\myenv\python.exe(Windows) - 再运行一次
python -m ipykernel install --user --name myenv --display-name "Python (myenv)",强制刷新 kernel.json 中的路径 - 避免环境路径含空格或中文——VSCode 解析
kernel.json时可能截断
远程服务器上的 Jupyter 内核怎么连进 VSCode
VSCode 不会自动发现远程服务,必须手动提供完整 URL(含 token),且远程 kernel 必须提前注册好。
实操建议:
- 在远程服务器上先激活环境,装
ipykernel,再运行:python -m ipykernel install --user --name myenv --display-name "Python (myenv)" - 启动
jupyter server(不是jupyter notebook):jupyter server --port=8888 --no-browser --allow-root --ServerApp.allow_remote_access=True --ServerApp.token='' --ServerApp.password='' - 运行
jupyter server list,复制输出中的完整 URL,例如:http://127.0.0.1:8888/?token=abc123 - VSCode 中按
Ctrl+Shift+P→ 输入Jupyter: Specify Jupyter Server URI→ 粘贴上面的 URL - 若用 Nginx 反向代理,必须透传
Upgrade和Connection请求头,否则 WebSocket 连接卡在 pending
最易被忽略的一点:远程 kernel 的 kernel.json 里写的 Python 路径,必须真实存在于远程服务器上;VSCode 本地选的 Interpreter 路径对远程完全无效,别填本地路径。










