jupyter notebook 不会自动识别新创建的 conda 环境,必须在激活环境下安装 ipykernel 并执行 python -m ipykernel install --user --name=py310 --display-name="python 3.10" 注册内核,且注册后需彻底重启 jupyter 进程才能在 kernel 菜单中显示并正确切换。

Jupyter Notebook 不会自动识别你新创建的 Python 环境,哪怕 conda create -n py310 python=3.10 成功了,Kernel 菜单里依然只显示默认项——必须手动注册内核,否则切换根本无从谈起。
为什么 Kernel 菜单里看不到新环境?
因为 Jupyter 的内核列表和 conda 环境是解耦的。它只读取 jupyter kernelspec list 所列的已注册内核,不扫描系统中“存在”的 Python 解释器。
- 执行
jupyter kernelspec list输出里没有你的环境名(比如py310) -
Kernel → Change Kernel下拉菜单只有Python 3或Python (base),没有带版本号或自定义名的选项 - 误以为
conda activate py310 && jupyter notebook就能自动生效——其实不会,Notebook 启动时用的是启动它的那个 shell 的 Python,不是你刚激活的环境
如何正确注册一个 conda 环境为 Jupyter 内核?
注册命令必须在目标环境**已激活**状态下运行,且需安装 ipykernel;漏掉任一环节,注册的就是旧环境的解释器。
快速生成专业的 Python 脚本和应用代码。一键创建完整项目结构,支持CLI、API、爬虫、Bot、Django等多种项目类型,包含完整的项目结构、配置文件、依赖管理、测试、README和文档。
- 先激活目标环境:
conda activate py310 - 确保
ipykernel已安装:pip install ipykernel(conda 环境里也可用conda install ipykernel) - 执行注册:
python -m ipykernel install --user --name=py310 --display-name="Python 3.10" -
--name是内核在文件系统中的唯一标识(路径名),只能含英文、数字、下划线,不能有空格或括号 -
--display-name是 Notebook 界面里显示的名称,可加中文或说明,比如"PyTorch 2.6 + CUDA" - 务必加
--user参数;避免用--system,除非你明确要全局安装并处理权限问题
切换后 import 失败或 sys.executable 指向错误路径?
这不是代码问题,而是内核绑定没生效或缓存未刷新。关键验证点只有一个:sys.executable 是否指向目标环境的 Python 可执行文件路径。
- 在 Notebook 单元格中运行:
import sys; print(sys.executable) - 输出应类似
/home/user/miniconda3/envs/py310/bin/python(Linux/macOS)或C:\Users\XXX\miniconda3\envs\py310\python.exe(Windows) - 如果不匹配:点击
Kernel → Interrupt,再Kernel → Change Kernel → 选 py310 → 确认重启(别跳过弹窗) - 仍不对?用
jupyter kernelspec remove py310彻底删掉旧注册,重新走一遍激活→安装→注册流程 - 注册完必须重启 Jupyter Notebook 进程(关掉所有 notebook 页面 + 终端里的
jupyter notebook进程),否则新内核不会出现在菜单里
最容易被忽略的其实是最后一步:注册完不重启 Jupyter,等于白干。不是刷新网页就行,得杀进程重启。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










