Skip to content

introduction_jupyter_ipython

Project Jupyter 提供了一个强大的生态系统,支持跨多种编程语言的交互式计算。其核心功能是让用户创建和共享被称为“笔记本”(notebooks)的文档,这些文档结合了实时代码、公式、可视化内容和叙述性文本。

Project Jupyter 于 2014 年左右从 IPython (Interactive Python) 发展而来。IPython 最初是一个增强的交互式 Python shell,但该项目后来发展壮大,包含了与语言无关的组件,例如笔记本格式和 Web 应用程序。Jupyter 现在通过一套“内核”(kernels)系统,支持数十种语言(例如 Python, R, Julia, Scala)的交互式计算。

Jupyter 伞形项目下的关键组件包括:

  • Jupyter Notebook: 最初基于 Web 的交互式计算环境,你可以在其中将代码执行、文本、数学公式、图表和富媒体组合到一个文档中。
  • JupyterLab: Project Jupyter 的下一代可扩展的基于 Web 的用户界面。它提供了一个更加集成和灵活的环境,在一个模块化的界面中结合了笔记本、代码编辑器、终端和自定义组件。
  • Jupyter Kernels: 由 Jupyter 服务器启动的独立进程,用于运行特定语言的代码并将结果返回给前端(例如 JupyterLab 或 Notebook)。IPython 是 Python 的默认内核。
  • Jupyter 笔记本格式 (.ipynb): 一种基于 JSON 的文档格式,用于存储笔记本内容,包括代码单元格(code cells)、Markdown 单元格(markdown cells)、输出和元数据(metadata)。
  • QtConsole: 一个桌面 GUI 控制台应用程序,提供了类似于 IPython 终端的功能,但以图形窗口形式呈现。
  • nbviewer: 一个用于渲染在线托管的 Jupyter 笔记本(例如在 GitHub 上)的静态 HTML 版本的服务。

IPython (Interactive Python) 是提供强大交互式 Python shell 的组件,更重要的是,它提供了 Jupyter 的 Python 内核。当你在 JupyterLab 或 Jupyter Notebook 中运行 Python 代码时,你通常是在与一个在后台运行的 IPython 内核进行交互。

即使没有 Jupyter,IPython 也可以作为独立的增强型 REPL(Read-Evaluate-Print Loop,读取-求值-打印循环)在你的终端中使用。

IPython(以及 Jupyter 的 Python 内核)的关键特性

Section titled “IPython(以及 Jupyter 的 Python 内核)的关键特性”

IPython 在标准 Python 解释器之上提供了显著的改进:

  • 全面的交互式 shell: 强大的功能,例如 Tab 键补全、命令历史记录和语法高亮。
  • 对象自省 (Object Introspection): 使用 ? 和 ?? 可以轻松获取有关对象的信息。
  • 魔术命令 (Magic Commands): 以 % 或 %% 为前缀的特殊命令,用于执行计时代码、运行 shell 命令、控制绘图等任务。
  • 富文本输出 (Rich Output): 能够在 JupyterLab 等前端直接显示图表、图像、HTML、LaTeX 和其他富媒体。
  • 调试工具 (Debugging Tools): 与 Python 调试器 (pdb/ipdb) 集成。
  • 自定义: 可通过启动文件和配置文件进行配置。

Jupyter/IPython 生态系统在数据科学、科学计算、机器学习和教育领域特别受欢迎,因为它支持:

  • 可复现研究 (Reproducible Research): 笔记本捕获了完整的分析工作流程,包括代码、叙述和结果。
  • 探索性数据分析 (Exploratory Data Analysis): 在一个地方快速迭代代码、可视化数据并记录发现。
  • 共享与协作 (Sharing and Collaboration): 笔记本相对易于共享,可以在 GitHub 或 nbviewer 等平台上静态渲染。
  • 教学与学习 (Teaching and Learning): 非常适合创建交互式教程和逐步演示概念。

现代 IPython 版本通常需要 Python 3.6 或更高版本。虽然旧版本支持 Python 2.7,但它已不再维护。本教程重点介绍在 JupyterLab/Notebook 环境中使用现代 Python 版本来利用 IPython 的功能。