Jupyter Notebook入门指南
字数 2251 2025-08-11 21:26:39
Jupyter Notebook 全面教学指南
1. Jupyter Notebook 简介
Jupyter Notebook 是一套基于 web 的交互式开发环境,允许用户在线开发和分享包含代码和输出的交互式文档。它支持:
- 实时代码执行
- 数学方程
- 可视化
- Markdown 富文本
主要用途包括:
- 数据清理和转换
- 数值模拟
- 统计建模
- 机器学习开发
架构原理
Jupyter 采用客户端-服务器架构:
- Jupyter Server:提供基于 Web 的界面和 API 服务
- Kernel:执行代码片段的核心进程
通信方式:
- 浏览器 ↔ Jupyter Server:HTTP 和 WebSockets
- Jupyter Server ↔ Kernel:ZeroMQ
2. 安装与配置
安装前提
- Python 3.6+(Jupyter Notebook v6.5.2 要求)
- pip 包管理工具
安装步骤
# 更新pip
pip install --upgrade pip
# 安装Jupyter
pip install jupyter
# 验证安装
jupyter --version
配置文件
生成配置文件:
jupyter notebook --generate-config
默认位置:~/.jupyter/jupyter_notebook_config.py
重要配置项
| 配置项 | 默认值 | 说明 |
|---|---|---|
c.NotebookApp.allow_root |
False | 是否允许root用户运行 |
c.NotebookApp.allow_origin |
'' | 设置允许的origin(如"*") |
c.NotebookApp.ip |
'localhost' | 服务监听IP |
c.NotebookApp.port |
8888 | 服务端口 |
c.NotebookApp.notebook_dir |
'/' | 工作空间目录 |
c.NotebookApp.open_browser |
True | 启动后是否自动打开浏览器 |
c.NotebookApp.default_url |
'/tree' | 默认访问路径 |
3. 核心功能与使用
3.1 基本操作
启动服务:
jupyter notebook
访问令牌:
jupyter notebook list
# 返回格式:http://x.x.x.x:8899?token=ABC
3.2 Notebook 文件
- 文件格式:
.ipynb(JSON格式) - 包含:代码、文本内容和元数据
3.3 单元格类型
- Code:编写可执行代码
- Markdown:编写富文本
- Raw NBConvert:原始文本(不解释执行)
- Heading:标题(Markdown子集)
3.4 检查点
- 自动保存修改记录
- 手动保存:文件 → 保存
- 位置:
.ipynb_checkpoints目录
4. 高级功能
4.1 魔法函数
查看所有魔法函数:
%lsmagic
常用魔法函数:
| 指令 | 类型 | 说明 |
|---|---|---|
%matplotlib |
行 | 设置matplotlib显示模式 |
%%javascript |
单元格 | 执行JavaScript代码 |
%%html |
单元格 | 执行HTML代码 |
%run |
行 | 执行外部脚本 |
%pwd |
行 | 获取当前工作目录 |
%timeit |
行 | 测量代码执行时间 |
%debug |
行 | 激活调试模式 |
4.2 内核管理
查看已安装内核:
jupyter kernelspec list
安装新内核:
# 安装ipykernel
pip install ipykernel
# 注册内核
python -m ipykernel install --name 内核名称 --display-name "显示名称"
删除内核:
jupyter kernelspec remove 内核名称
4.3 多语言支持
翻译文件位置:
nbjs.po- JS文件翻译nbui.po- UI界面翻译notebook.po- Notebook内容翻译
编译翻译文件:
pybabel compile -D notebook -f -l ${LANG} -i ${LANG}/LC_MESSAGES/notebook.po -o ${LANG}/LC_MESSAGES/notebook.mo
5. 扩展开发
5.1 前端扩展
示例扩展(保存为main.js):
define(['base/js/namespace'], function(Jupyter) {
function load_ipython_extension() {
var handler = function() { alert('欢迎使用前端扩展!'); };
var action = {
icon: 'fa-comment-o',
help: '前端扩展',
help_index: 'zz',
handler: handler
};
var prefix = 'my_extension';
var action_name = 'show-alert';
var full_action_name = Jupyter.actions.register(action, action_name, prefix);
Jupyter.toolbar.add_buttons_group([full_action_name]);
}
return { load_ipython_extension: load_ipython_extension };
});
管理命令:
# 安装
jupyter nbextension install /path/to/ext
# 启用
jupyter nbextension enable ext_name/main
# 禁用
jupyter nbextension disable ext_name/main
# 卸载
jupyter nbextension uninstall ext_name
5.2 服务端扩展
示例扩展(保存为__init__.py):
from tornado import gen, web
from notebook.base.handlers import IPythonHandler
class HelloWorldHandler(IPythonHandler):
@web.authenticated
@gen.coroutine
def get(self):
self.finish('Hello, world!')
def load_jupyter_server_extension(serverapp):
handlers = [('/myextension/hello', HelloWorldHandler)]
serverapp.web_app.add_handlers('.*$', handlers)
配置文件结构:
hello-extension/
__init__.py
jupyter-config/
jupyter_notebook_config.d/
hello_extension.json
管理命令:
# 启用
jupyter serverextension enable hello_extension
# 禁用
jupyter serverextension disable hello_extension
5.3 小部件(Widgets)
安装:
pip install --upgrade traitlets
pip install --upgrade ipywidgets
jupyter nbextension install --py widgetsnbextension
jupyter nbextension enable --py widgetsnbextension
6. REST API
Jupyter 提供完整的 REST API 用于:
- 文件上传/下载
- 检查点管理
- 会话管理
- 内核管理
- 终端管理
认证方式:
- Token 作为查询参数:
?token=ABC - Authorization 头:
Authorization: token ABC
API文档:https://jupyter-server.readthedocs.io/en/latest/developers/rest-api.html
7. 安全与协作
安全建议
- 避免使用 root 用户运行
- 合理配置工作空间目录权限
- 使用 Python 虚拟环境隔离依赖
- 谨慎配置
allow_origin
多人协作
使用 JupyterHub 实现:
- 多用户独立空间
- Notebook 共享
- 权限管理
8. 应用场景
- 交互式文档:结合代码和说明的生动文档
- 数据探索:实时查看数据处理结果
- 教学演示:逐步执行代码展示过程
- 研究报告:整合分析过程和可视化结果
9. 导出与分享
导出格式:
- HTML
- Markdown
- Python脚本
分享方式:
- 交互式:分享
.ipynb文件或访问URL - 静态文档:导出为HTML/PDF等格式
本指南涵盖了 Jupyter Notebook v6.5.2 的核心功能和高级用法,适用于从入门到进阶的各类用户。通过灵活运用这些功能,可以极大提升数据科学和机器学习开发的工作效率。