VSCode的Jupyter扩展需jupyter命令在PATH中、端口8888未被占用、ipykernel已安装并注册、解释器与内核匹配,且环境变量生效;否则内核卡在Connecting。

检查 jupyter 命令是否在系统 PATH 中
VSCode 的 Jupyter 扩展依赖终端能直接调用 jupyter 命令。如果它找不到,内核就卡在 Connecting。常见现象是点击“Select Kernel”后列表为空,或日志里反复出现 Command 'jupyter' not found。
- 在 VSCode 内置终端(
Ctrl+`)里运行jupyter --version,确认有输出;没输出说明命令不可达 - 如果用 conda 环境,别只激活了环境再开 VSCode —— 要么从该环境的终端启动 VSCode(
code .),要么在 VSCode 设置里指定python.defaultInterpreterPath指向含jupyter的 Python 解释器 - Windows 用户尤其注意:PowerShell 默认不继承系统环境变量,建议把 VSCode 终端默认设为 Command Prompt 或 Git Bash,或手动在 PowerShell 里执行
$env:PATH += ";C:\path\to\your\Scripts"
确认 jupyter-notebook 或 jupyter-lab 服务没被占用或异常退出
VSCode Jupyter 扩展底层会尝试启动一个本地 notebook server(默认端口 8888)。如果端口被占、上次崩溃未清理、或存在冲突的 jupyter_server_config.py,就会无限 Connecting。
- 运行
lsof -i :8888(macOS/Linux)或netstat -ano | findstr :8888(Windows)查端口占用;若有 PID,用kill -9 [PID]或任务管理器结束进程 - 删掉
~/.jupyter/runtime/目录(macOS/Linux)或%USERPROFILE%\.jupyter\runtime\(Windows),强制清除残留 socket 和 pid 文件 - 临时禁用自定义配置:重命名
jupyter_server_config.py和jupyter_notebook_config.py,看是否恢复正常 —— 常见坑是配了c.NotebookApp.allow_origin = '*'却没开 token 验证,导致 VSCode 连不上
VSCode 扩展和内核路径匹配问题
即使 Python 解释器选对了,VSCode 也可能拿不到该环境里的 ipykernel。典型表现是 kernel 列表里显示 “Python 3.11 (conda)” 但点进去仍 Connecting,日志里报 ModuleNotFoundError: No module named 'ipykernel'。
- 在目标环境中运行:
python -m pip install ipykernel(不要只装jupyter) - 注册内核到 Jupyter:运行
python -m ipykernel install --user --name myenv --display-name "Python (myenv)",其中--name是唯一标识,--display-name是 VSCode 下拉菜单里看到的名字 - VSCode 中按
Ctrl+Shift+P→ 输入Jupyter: Select Interpreter to Start Jupyter Server,选跟 kernel 匹配的那个解释器,而不是随便点一个 - 注意:如果用了 Poetry 或 PDM,它们的虚拟环境路径可能不在常规位置,
ipykernel install必须在该环境下执行,不能跨环境调用
防火墙 / 公司代理拦截 localhost 请求
某些企业网络策略会拦截 http://localhost:8888 的 WebSocket 连接,导致前端收不到 kernel 启动成功的响应,状态一直停在 Connecting。
- 打开浏览器访问
http://localhost:8888/api/sessions,如果返回 JSON 列表,说明服务正常,问题出在 VSCode 与服务通信环节;如果连这个都打不开,先解决服务本身 - 在 VSCode 设置中搜索
jupyter.allowUnauthorizedRemoteConnection,设为true(仅限本地开发环境) - 关闭 Windows Defender 防火墙临时测试,或添加
code.exe和python.exe到允许列表 - 代理用户:确保
HTTP_PROXY/HTTPS_PROXY环境变量没污染 Jupyter 启动过程;可在 VSCode 设置里加"http.proxyStrictSSL": false并重启窗口
最常被忽略的是:VSCode 启动时读取的是它启动那一刻的环境变量,不是你后来在终端里 export 的。改完 PATH 或装完 ipykernel,务必完全退出 VSCode(包括后台进程),再重新打开。


















