前言
Jupyter Notebook / JupyterLab 是 Python 数据科学领域最流行的交互式开发工具,它把代码、文档、图表融为一体,非常适合探索性数据分析、机器学习实验和技术文档编写。
本文从零开始,覆盖 Conda 环境下的安装、内核配置、常用快捷键、魔法命令以及常见问题排查,适合初次接触 Jupyter 或想系统梳理用法的读者。
一、基础概念
在开始安装之前,先理清三个概念:
| 名称 | 是什么 |
|---|---|
| Jupyter Notebook | 经典 Web 界面,.ipynb 文件的默认编辑器 |
| JupyterLab | 新一代界面,支持多标签页、文件浏览器、终端、Markdown 预览等,功能更强 |
| ipykernel | 内核,负责执行你写的 Python 代码。每个 Conda 环境可以注册一个独立内核 |
一句话总结: JupyterLab 是升级版的 Notebook,ipykernel 是背后的执行引擎。本文后续均推荐使用 JupyterLab。
二、安装步骤
2.1 激活目标环境
bash
conda activate ml
2.2 安装 Jupyter 核心组件
bash
# 安装 Jupyter Notebook(经典版,包含 jupyter 命令)
pip install jupyter
# 安装 JupyterLab(推荐,功能更全)
pip install jupyterlab
如果只装 JupyterLab,也可以省略
jupyter这个包------jupyter lab命令由jupyterlab自带。
2.3 安装并注册内核
这是最关键的一步:把当前 Conda 环境注册为 Jupyter 的内核,这样在 Jupyter 里运行代码时,使用的就是当前环境的 Python 和已安装的包。
bash
# 安装内核工具
pip install ipykernel
# 注册内核,"ml" 对应 Conda 环境名,"Python (ml)" 是界面上显示的名称
python -m ipykernel install --user --name=ml --display-name="Python (ml)"
验证内核是否注册成功:
bash
jupyter kernelspec list
示例输出:
Available kernels:
python3 C:\...\jupyter\kernels\python3
ml C:\...\jupyter\kernels\ml
三、多内核管理与生产环境实践
当你有多个 Conda 环境需要接入 Jupyter 时,按上述方式为每个环境注册一个内核即可:
bash
conda activate dl_env
pip install ipykernel
python -m ipykernel install --user --name=dl_env --display-name="Python (DL)"
conda activate web_env
pip install ipykernel
python -m ipykernel install --user --name=web_env --display-name="Python (Web)"
之后在 Jupyter 界面中即可自由切换不同环境,无需重启服务。
删除内核
bash
# 列出所有内核,找到要删除的名称
jupyter kernelspec list
# 卸载指定内核
jupyter kernelspec uninstall ml
注意:卸载内核只是移除了"环境 → Jupyter"的映射关系,不会删除你的 Conda 环境本身。
四、启动与访问
| 命令 | 作用 |
|---|---|
jupyter notebook |
启动经典 Notebook |
jupyter lab |
启动 JupyterLab(推荐) |
jupyter lab --port 8888 |
指定端口启动 |
jupyter lab --no-browser |
不自动打开浏览器(适合远程服务器) |
jupyter lab --ip=0.0.0.0 |
允许外部访问(配合远程服务器使用) |
远程服务器典型启动方式:
bash
jupyter lab --no-browser --port=8888 --ip=0.0.0.0
然后在本地浏览器访问 http://<服务器IP>:8888,查看终端输出的 token 完成首次登录。
五、快捷键速查
掌握这些快捷键可以大幅减少鼠标操作,让你的 Jupyter 体验上天入地。
5.1 两种模式
| 模式 | 进入方式 | 特点 |
|---|---|---|
| 命令模式(蓝色边框) | 按 Esc |
操作单元格整体:移动、删除、切换类型 |
| 编辑模式(绿色边框) | 按 Enter |
在单元格内编写代码或 Markdown |
5.2 命令模式快捷键(按 Esc 后生效)
| 快捷键 | 作用 |
|---|---|
A |
在当前单元格上方插入新单元格 |
B |
在当前单元格下方插入新单元格 |
DD(连按两次 D) |
删除当前单元格 |
M |
将单元格转为 Markdown 类型 |
Y |
将单元格转为 代码 类型 |
Shift + ↑ / ↓ |
多选单元格 |
Shift + M |
合并选中的单元格 |
Z |
撤销删除单元格 |
Ctrl + Shift + - |
在光标处拆分单元格 |
5.3 编辑模式快捷键(按 Enter 后生效)
| 快捷键 | 作用 |
|---|---|
Shift + Enter |
运行当前单元格,并跳转到下一格 |
Ctrl + Enter |
运行当前单元格,光标留在原地(适合反复调试) |
Alt + Enter |
运行当前单元格,并在下方插入新格 |
Tab |
代码补全 / 函数签名提示 |
Shift + Tab |
展开当前函数的文档字符串(多按几次可展开更多) |
六、魔法命令
魔法命令以 % 或 %% 开头,是 Jupyter 的内置增强功能(来自 IPython)。
6.1 常用行魔法命令(%)
python
# 查看当前目录下所有变量及其类型
%whos
# 测量单行代码的执行时间
%timeit sum(range(1000000))
# 测量多行代码的执行时间
%%timeit
result = 0
for i in range(1000000):
result += i
# 让 matplotlib 图表直接嵌入 notebook
%matplotlib inline
# 一行代码启用调试器,异常时自动进入 pdb
%pdb
# 列出所有魔法命令
%lsmagic
6.2 在单元格中执行 Shell 命令
python
# 执行任意 shell 命令
!pip list
# 将 shell 命令的输出赋值给 Python 变量
files = !ls
print(files)
6.3 其他实用操作
python
# 将单元格内容写入文件
%%writefile hello.py
print("Hello, World!")
# 加载外部 Python 文件
%load hello.py
# 运行外部 Python 脚本
%run hello.py
七、常用扩展推荐
JupyterLab 支持丰富的扩展生态,以下为高频实用的几个:
bash
pip install nbconvert nbformat ipywidgets jupyterlab-language-packs-zh-CN
| 扩展 | 作用 |
|---|---|
nbconvert |
将 .ipynb 导出为 HTML / PDF / Markdown / Python 脚本 |
nbformat |
程序化读写 .ipynb 文件(适合构建自动化管道) |
ipywidgets |
在 Notebook 中创建滑块、按钮、下拉菜单等交互控件 |
jupyterlab-language-packs-zh-CN |
JupyterLab 简体中文语言包 |
导出为 HTML 示例:
bash
jupyter nbconvert --to html notebook.ipynb
八、常见问题
Q1: 终端提示找不到 jupyter 命令
通常是因为没有在当前环境中安装 Jupyter,或者安装后没有重新激活环境。
bash
conda activate ml
pip install jupyter jupyterlab ipykernel
Q2: 在 Jupyter 里如何安装缺失的包?
直接在单元格中运行即可,包会安装到当前内核对应的环境中:
python
!pip install package_name
Q3: 内核列表中看不到我注册的环境
重新执行注册命令,并检查是否有权限问题(--user 确保安装到用户目录):
bash
python -m ipykernel install --user --name=ml --display-name="Python (ml)"
jupyter kernelspec list
Q4: 如何让 JupyterLab 显示中文界面?
安装中文语言包后,在 Settings → Language 中切换到中文:
bash
pip install jupyterlab-language-packs-zh-CN
Q5: 远程连接时忘了 token 怎么办?
在服务器终端执行以下命令查看正在运行的 Jupyter 进程列表及 token:
bash
jupyter server list
九、配置密码登录(远程服务器必备)
每次复制粘贴 token 很不方便,可以设置一个固定密码:
bash
jupyter server password
按提示输入密码后,会在 ~/.jupyter/jupyter_server_config.json 生成密码哈希。之后访问 Jupyter 时直接输密码即可。
总结
Jupyter 的核心竞争力在于 "代码 + 文档 + 图表"三者合一 的交互式体验。本文从安装配置、内核管理、快捷键、魔法命令到远程部署,覆盖了 Jupyter 日常使用的完整链路。
几点建议:
- 日常开发用 JupyterLab 替代经典 Notebook,功能强太多
- 快捷键中
Shift + Enter、A/B、M/Y、DD是"元技能",尽快练成肌肉记忆 - 魔法命令
%timeit、%pdb、%matplotlib inline是调试和性能分析的利器 - 远程服务器上设置好
server password,省去每次找 token 的麻烦