Jupyter Notebook不自动识别新conda环境,必须在目标环境中依次执行conda activate、conda install ipykernel、python -m ipykernel install --user --name=xxx --display-name="xxx"完成内核注册,之后才能在Kernel→Change kernel中切换。

直接说结论:Jupyter Notebook 本身不“切换环境”,它靠的是 ipykernel 注册的内核(kernel)来执行代码。你看到的“切换环境”,本质是换了一个已注册的 Python 解释器实例 —— 所以关键动作不是启动时选环境,而是让目标环境变成 Jupyter 可识别的 kernel。
为什么 Kernel 菜单里看不到你的 Conda 环境?
最常见原因是:那个环境没装 ipykernel,也没执行注册命令。Jupyter 启动时只扫描自己已知的 kernel 列表,不会主动探测所有 conda 环境。
注意:conda activate myenv 后直接运行 jupyter notebook,并不会自动把 myenv 加进 kernel 列表 —— 这只是改变了当前终端的 Python,但 Jupyter(尤其是从 base 启动的)压根不知道这个环境存在。
- 检查是否安装了
ipykernel:在目标环境中运行python -c "import ipykernel",报错说明没装 - 确认是否注册过 kernel:运行
jupyter kernelspec list,看输出里有没有你环境对应的名字(比如myenv) - 别在 base 环境里用
conda install ipykernel想“覆盖”其他环境 —— 每个环境必须单独操作
怎么把一个 Conda 环境变成可用的 Jupyter Kernel?
三步必须按顺序、在目标环境中完成:
立即学习“Python免费学习笔记(深入)”;
- 先激活环境:
conda activate myenv - 装
ipykernel:conda install ipykernel(或pip install ipykernel,优先用 conda) - 注册 kernel:
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
--name 是 kernel 的唯一标识(建议和环境名一致),--display-name 是你在 Jupyter 界面里看到的名称。如果重名,后注册的会覆盖前一个 —— 不会报错,但旧 kernel 就没了。
注册完不用重启 Jupyter:刷新页面或新建 notebook,Kernel → Change kernel 就能看见新选项。
切换 kernel 时常见错误和应对
点选 kernel 后卡住、报错 Kernel died, restarting 或根本没反应,通常不是 Jupyter 问题,而是 kernel 自身启动失败:
- 检查目标环境里是否装了
ipykernel(见上一条) - 确认该环境的 Python 是否能正常启动:
conda activate myenv && python -c "print('ok')" - 如果环境依赖某些 C 库(如 CUDA 相关包),而系统缺少对应 runtime,kernel 也会静默崩溃 —— 此时看 Jupyter 启动终端的报错日志更准
- 误删 kernel?用
jupyter kernelspec uninstall myenv,再重新注册
注意:nb_conda 或 nb_conda_kernels 这类插件现在基本不用了 —— 它们试图自动发现环境,但兼容性差、容易冲突,且新版 conda + ipykernel 组合已足够稳定。
多个环境共存时要注意什么?
每个 kernel 都绑定到具体 Python 解释器路径,所以只要环境没被删、解释器文件没损坏,kernel 就一直有效。但有几点容易忽略:
- 改名或删环境后,对应的 kernel 不会自动失效 ——
jupyter kernelspec list仍显示,但点选会报错,得手动uninstall -
--user参数注册的 kernel 存在用户目录下(如~/.local/share/jupyter/kernels/),不同用户之间不共享 - 如果你用
sudo jupyter notebook启动,kernel 必须也用sudo python -m ipykernel install ...注册,否则权限不匹配
真正麻烦的不是注册步骤,而是注册后忘了哪个 kernel 对应哪个环境 —— 建议 --display-name 里带上 Python 版本,比如 "Python 3.9 (myenv)",避免点错。


















