内核未出现在右上角列表,是因为VSCode不自动注册venv/conda环境,需先激活目标环境、运行pip install ipykernel jupyter-core,再执行python -m ipykernel install --user --name myenv --display-name "Python (myenv)"(--name不含空格/中文),最后重启VSCode或执行Jupyter: Refresh Kernel List。

内核没出现在右上角列表里怎么办
VSCode不会自动把所有Python环境注册为Jupyter内核,尤其是venv或conda新建的环境。点开右上角“Select Kernel”后只看到Python 3 (system)或空白,说明内核尚未被Jupyter识别。
先确认目标环境已安装ipykernel和jupyter-core:
- 激活环境:
conda activate myenv或source .venv/bin/activate - 运行:
pip list | grep ipykernel(macOS/Linux)或pip list | findstr ipykernel(Windows) - 若无输出,执行:
pip install ipykernel jupyter-core(别用conda install ipykernel,部分镜像源会装错版本)
再手动注册:
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
其中--name必须是合法标识符(不能含空格、中文、特殊符号),--display-name才是你在VSCode下拉菜单里看到的名字。注册后务必重启VSCode,或执行命令Jupyter: Refresh Kernel List。
选了内核但执行单元仍报ModuleNotFoundError
常见现象:右上角明明选了Python (myenv),运行import torch却提示No module named 'torch'。这不是VSCode选错了,而是内核和解释器配置不一致。
VSCode里有两个独立设置层:
- 右上角Kernel:决定代码**运行时**用哪个Python环境(即
sys.executable) - 左下角Python Interpreter:决定**代码补全、静态检查、调试器**用哪个环境(即Pylance/LSP依赖的路径)
二者可以不同,但绝大多数情况应保持一致。解决方法:
- 打开
.ipynb文件,在右上角点击当前内核名 → 从下拉列表中**重新选择一次**你注册的Python (myenv) - 同时按
Ctrl+Shift+P→ 输入Python: Select Interpreter→ **同样选中该环境路径**(如~/myproject/.venv/bin/python) - 验证:在Notebook中运行
import sys; print(sys.executable),输出路径应与你选中的解释器路径完全一致
导出Notebook为Python脚本时丢失Markdown和输出
VSCode默认导出(右键→Export as Python Script)只保留代码单元,所有Markdown单元被忽略,单元执行结果(图表、print输出、变量值)也一并丢弃——这是设计行为,不是bug。
如需保留结构或可复现结果,推荐以下方式:
- 导出为
.py仅用于提取逻辑:适合将分析流程转为可调度脚本,但需手动补全注释 - 导出为
.html或.pdf(右键→Export As):保留所有Markdown、图表渲染结果和执行输出,但不可执行 - 真正需要“带输出的可执行备份”,用命令行:
jupyter nbconvert --to script --execute my_notebook.ipynb,它会边运行边生成.py,但要求内核能完整跑通所有单元
注意:nbconvert调用的是当前系统默认jupyter命令,不是VSCode内核。若想强制用特定环境,先激活它再运行命令。
为什么禁用Jupyter: Enable Remote很重要
如果你没开过远程Jupyter服务,却在执行单元时卡在Connecting to kernel…、状态栏反复闪烁、甚至弹出Select Jupyter server对话框,大概率是VSCode误启了远程模式。
根本原因:VSCode的Jupyter扩展默认允许连接本地或远程server,一旦检测到localhost:8888等端口有服务监听(比如你昨天跑过jupyter notebook),它就可能跳过本地内核直连过去。
解决方法很简单:
- 打开VSCode设置(
Ctrl+,),搜索jupyter: enable remote - 取消勾选
Jupyter: Enable Remote - 同时启用
Jupyter: Local Kernel Specs Only(确保只读取~/.local/share/jupyter/kernels/下的本地注册)
这个开关不显眼,但影响极大——很多“内核明明装了却连不上”的问题,关掉它立刻解决。


















