conda环境存在但jupyter不显示,根本原因是未注册ipykernel;必须在目标环境中执行conda activate env_name → conda install ipykernel → python -m ipykernel install --user --name env_name --display-name "env_name",并确认jupyter kernelspec list路径正确且sys.executable指向该环境。

conda环境存在但Jupyter不显示?先查是否注册了ipykernel
Conda env list 能看到环境,不代表Jupyter能用它——Jupyter只认已注册的 kernel。没装 ipykernel,或者装了但没注册,就等于“有房没门牌”,Notebook根本找不到入口。
常见错误现象:import torch 报错、新建 notebook 默认还是 python3(base)、Kernel 列表里压根没有目标环境名。
- 必须在目标环境中运行:
conda activate ml312→conda install ipykernel - 注册命令要带
--name,否则默认注册为python3,覆盖原 kernel:python -m ipykernel install --user --name ml312 --display-name "ml312" - 如果提示
PermissionError,说明--user写错了位置,正确顺序是python -m ipykernel install --user --name xxx,不是--user放最后
Jupyter启动时用的是哪个Python?这决定默认kernel来源
你在终端里 jupyter notebook 是从哪个环境启动的,就决定了它默认加载哪些 kernel。如果是在 base 环境下敲的命令,那即使你注册了 py311 kernel,它也只会在 kernel 列表里出现,不会自动变成默认。
验证方式:在 notebook 里运行:import sys; print(sys.executable)。输出路径应该和你目标环境的 python 路径一致(比如 ~/miniconda3/envs/py311/bin/python),否则说明启动源头不对。
- 想让新 notebook 默认用某环境?别在 base 启动,改用:
conda activate py311 && jupyter notebook - 如果用了
--no-browser或后台启动,记得确认当前 shell 的$PATH指向的是目标环境的bin/目录 - Mac/Linux 用户注意:shell 配置文件(
.zshrc或.bash_profile)里如果有conda init生成的自动激活 base 的代码,会悄悄把所有终端默认拉回 base
kernel重复显示或路径错误?检查 jupyter kernelspec list 输出
jupyter kernelspec list 显示的是所有已注册 kernel 的真实路径。如果看到两个同名 kernel,或者某个 kernel 的 argv 里写的 python.exe 还指向 base 或旧路径,那就是注册污染或手动改过配置但没更新。
典型问题:faiss kernel 显示出来了,但点进去执行 import faiss 还是报错——因为 kernelspec 配置里的 argv[0] 没指向该环境的 python。
- 删掉有问题的 kernel:
jupyter kernelspec uninstall faiss - 重新注册前,先确认当前
which python输出是你想要的路径 - 注册后进
~/.local/share/jupyter/kernels/ml312/kernel.json(Linux/Mac)或%USERPROFILE%\AppData\Roaming\jupyter\kernels\ml312\kernel.json(Windows),检查"argv"第一项是不是目标环境下的python绝对路径
Windows上出现 EnvironmentLocationNotFound 错误?别碰 nb_conda 源码
这个错误本质是 nb_conda 插件试图扫描 conda 环境目录时,读到了一个损坏或非标准路径(比如残留的旧环境符号链接、权限不足的挂载盘)。强行修改 envmanager.py 不仅容易出错,还会在下次 conda update nb_conda 时被覆盖。
更稳妥的做法是绕过插件,直接走 ipykernel 流程:
- 卸载
nb_conda:conda remove nb_conda(它已多年未维护,新版 Jupyter 不再依赖它) - 用标准方式注册 kernel:
conda activate your_env && python -m ipykernel install --user --name your_env - 如果仍报路径错误,检查环境路径是否含中文、空格或长路径(Windows 10+ 建议开启“对 Win32 长路径的支持”)
真正卡住的地方往往不是命令没输对,而是注册 kernel 时当前 shell 的 Python 解释器、conda 激活状态、以及 jupyter 启动入口这三者没对齐。每次操作前,先 which python 和 conda info --envs 对一遍,比反复重启 notebook 有效得多。











