本节摘要:Jupyter 的高效使用从「装对环境」开始。本节对比 Anaconda 与 pip 安装、演示 venv/conda 创建虚拟环境、用
ipykernel把环境注册为可选内核,并说明jupyter kernelspec list与import sys; sys.executable如何定位 ImportError 根因。
阅读完本节,你应当能够:
jupyter notebook 或 JupyterLabpython -m ipykernel install --user --name=... --display-name=... 注册内核jupyter kernelspec list 查看、用 jupyter kernelspec uninstall 清理废弃内核Anaconda 一次安装 Python + 常用科学计算包 + Navigator 图形入口,适合初学者快速开跑。官网下载安装后,可在 Navigator 里点 Jupyter Notebook,或在终端:
jupyter notebook
pip 更轻:已有 Python 时只需:
pip install notebook jupyter notebook
若团队已统一用 JupyterLab,可装 pip install jupyterlab,内核与环境管理逻辑与经典 Notebook 相同。
| 方式 | 适合 | 注意 |
|---|---|---|
| Anaconda | 单机学习、数据科学入门 | 包体积大,多环境用 conda 管理 |
| pip + venv | 项目制、CI 复现 | 需自行注册 ipykernel |
| 远程 JupyterHub | 团队/课程 | 内核由管理员预装,本地章节仍适用排查思路 |
⚠️ 常见坑:在系统 Python 里
pip install pandas,Notebook 却选中了 conda 的base内核——终端与 Notebook 不是同一个解释器。
SOURCE 原文强调:每个项目独立环境,避免 A 项目要 pandas 1.x、B 项目要 2.x 互相踩脚。
venv(Python 3.3+ 内置):
python3 -m venv my_project # Windows PowerShell 激活 .\my_project\Scripts\Activate.ps1 # Linux/macOS source my_project/bin/activate pip install ipykernel jupyter python -m ipykernel install --user --name=my_project --display-name="Python (my_project)"
conda(数据科学常见):
conda create --name data_science python=3.9 conda activate data_science pip install ipykernel python -m ipykernel install --user --name=data_science --display-name="Python (data_science)"
注册后,Notebook 菜单 Kernel → Change kernel 里会出现 Python (my_project) 或 Python (data_science)。--name 是机器用标识,--display-name 是界面显示名——团队文档里两个都要写清楚。

SOURCE 列出两条维护命令:
jupyter kernelspec listjupyter kernelspec uninstall <kernel_name>Notebook 首格验收代码(应指向你刚注册的环境):
import sys print(sys.executable) print(sys.version)
若路径不是 my_project\Scripts\python.exe(或 conda env 路径),说明右上角内核选错——这是「ModuleNotFoundError 明明 pip 装过」的最高频原因。
扩展(可选):SOURCE 提到 Nbextensions(pip install jupyter_contrib_nbextensions + jupyter contrib nbextension install --user)与 JupyterLab 扩展(如 @jupyterlab/toc)。扩展增强 UI,但不替代正确的内核;建议环境稳定后再装。
| 症状 | 优先检查 |
|---|---|
| import 失败 | 内核 vs 终端 Python 是否一致 |
| 装包后仍报错 | Kernel → Restart,而非只重跑单元格 |
| 内核列表杂乱 | kernelspec uninstall 旧项目名 |
| 多人协作对不上版本 | requirements.txt 或 environment.yml + README 写内核 display-name |
💡 关键直觉:
display-name给人看,--name给 Jupyter 索引;删环境前先用kernelspec uninstall清注册,否则留下指向已删除路径的「僵尸内核」。
ipykernel install下一节进入 命令模式与快捷键——环境对了,就要让手速跟上。
实际工作中,你常常要同时在"做项目的 venv"和"复现论文的 conda 环境"之间切换。推荐的做法是给每个环境起一个一眼能认出的 --name 与 --display-name:
python -m ipykernel install --user \ --name=finance_report \ --display-name="Python (finance-report 3.10)"
conda create --name research_env python=3.11 conda activate research_env pip install ipykernel python -m ipykernel install --user \ --name=research_env \ --display-name="Python (research 3.11)"
注册完成后执行 jupyter kernelspec list,会看到两个内核条目。切内核时注意:Notebook 右上角只显示 display-name,命令行工具只认 name,两者对应关系要写进项目 README,否则换人接手又得从头猜。
Notebook 页面右上角的小圆点颜色含义值得记住:空心灰表示内核未连接,实心圆表示正在运行。当依赖装好却仍报 ModuleNotFoundError 时,先执行 Kernel → Restart,因为已导入的模块在内存里是旧版本,只有重启内核才会重新加载。另一个高频误判是把"重启内核"等同于"重启浏览器"——重启浏览器不会清空内核内存,问题依旧。
删除 conda 环境或 venv 目录后,Jupyter 仍会列出旧内核,点击必然报错。清理顺序是:先 jupyter kernelspec list 找到名字,再 jupyter kernelspec uninstall <name> 注销,最后才删环境目录。反过来如果先删了目录再注销,虽然 uninstall 仍可执行,但列表里会短暂残留指向不存在路径的悬空条目,容易误导同事。
| 症状 | 第一反应 | 第二反应 |
|---|---|---|
| pip 装包成功但 import 失败 | 核对 sys.executable | Kernel → Restart |
| 新环境在内核列表里找不到 | 重跑 ipykernel install | 检查 jupyter 命令所在环境 |
| 内核列表有旧项目残留 | kernelspec list | kernelspec uninstall |
| 换机器同一套代码报缺包 | 导出 requirements.txt | conda env export |