jupyter
Jupyter 是一个庞大的项目集,涵盖了众多不同的软件和产品。
Jupyter 的前身是 ipython,他目前依然是最为流行的 Python REPL 工具。之后引入了 .ipynb
富文本格式(由 nbformat 解析),其中可以包含代码、解释性文本(基于 Markdown)、图片等内容,并提供了Jupyter Notebook
程序来编写他们。随着项目的发展有引入了其他需求这就发展成了目前的 JupyterLab 工具,他更像是面向数学家、机器学习人员等专业人员的 IDE 工具。
项目组成
Jupyter 本质上对外提供了一系列 IDE 式服务,为了更好的结偶整个项目被拆分为不同的组件,其中最为核心的是Jupyter Server,他提供基础后端功能,包括文件管理、内核管理、REST API接口等核心功能。
Jupyter Server并不提供界面相关的内容,他们以其插件的形式提供,其中官方提供的 UI 扩展如下:
- JupyterLab: 下一代 IDE 化 Jupyter 工具,支持多标签页、插件扩展(如调试器、Git集成等)及更加自由的页面布局
- Jupyter Notebook: 经典的单文档交互环境(仅用于编辑
.ipynb
文件),适合用于快速代码验证与教学演示,最新的 Notebook 本质上就是 JupyterLab 中关于 Notebook UI 组件封装 nbclassic
: 最初的Jupyter Notebook
集成了notebook-server
后端,不过目前已经不再积极开发而是转向更为现代的JupyterLab,而nbclassic
为经典的 Notebook (所谓经典就是早期版本)提供了兼容支持- Jupyter Console: 提供了终端界面来与 Jupyter Server 进行通信。!! 目前该库缺乏维护,实际上IPython能够很好的替代他,当然IPython每办法很好的使用其他内核
上面介绍的都是框架形式的内容,而真正运行代码是由Kernel提供的,他是一个独立的运行进程,Jupyter Server通过特定的通信协议来管理 Kernel 以及与其进行通信来运行代码。
Tips
Jupyter 官方维护来三个语言的 Kernel,实际上 Jupyter 的名字就取自 Julia、Python 和 R 三种语言。第三方社区提供了更多的其他语言的 Kernel
围绕 Notebook 组件还拆分出来 nbformat/nbconvert/nbviewer...
等库,例如 nbformat 用于解析 .ipynb
格式文件,nbconvert 提供了将文件转换为 HTML/PDF/Markdown 等格式的能力,nbviewer 用于预览等等。
最后一个核心组件就是JupyterHub,他是 Jupyer 官方提供的多用户管理平台,可集中部署 Jupyter 环境并为用户分配独立实例。需要注意尽管我们可以将Jupyter Server部署到服务器上供远程用户使用而不仅仅局限于 localhost 使用,但这本质上依然是单人使用,多地连接有可能导致文件冲突。而 JupyterHub 则为不同用户提供了隔离环境是真正的多用户。
整体的项目构成以及架构如下图所示:
Tips
更多的可以查看Jupyter Projects。
安装
直接使用 pip|conda 安装即可:
他会自动帮你安装一些必要的依赖和扩展:
-> % jupyter --version
Selected Jupyter core packages...
IPython : 8.30.0
ipykernel : 6.29.5
ipywidgets : 8.1.5
jupyter_client : 8.6.3
jupyter_core : 5.7.2
jupyter_server : 2.14.1
jupyterlab : 4.3.4
nbclient : 0.10.2
nbconvert : 7.16.4
nbformat : 5.10.4
notebook : 7.3.2
qtconsole : 5.6.1
traitlets : 5.14.3
Tips
当然如果只是想要特定的扩展,也可以通过手动安装 jupyter_server(必须),和 notebook 扩展等形式来实现。
Tips
对于具有桌面的用户(尤其 Windows)还可以安装jupyterlab-desktop。