我在克利夫兰的 PyCon 2019 上遇到了很多出色的人,并学到了很多关于 Python 社区如何运作的知识。但我主要的技术收获与 JupyterLab 的魔力有关,它被描述为 Jupyter Notebook 的一个基于 Web 的用户界面,Jupyter Notebook 是一个应用程序,“允许你创建和分享包含实时代码、公式、可视化和叙述性文本的文档。”
JupyterLab 是 Python 编程的上帝模式。
这是我目前从 #pycon2019 中获得的体会。— Matt @ Home ? (@mbbroberg) 2019 年 5 月 2 日
当我在 JupyterLab 中处理 Python 代码时,感觉自己像个巫师,远早于我自信地从命令行开发与数据科学相关的 Python。下面介绍一下这种魔力,以及你如何亲身体验它。
Project Jupyter、Jupyter Notebook、JupyterLab 和 Python
在 PyCon 之前,我听说过 Jupyter Notebook,但我从未完全理解它与 Python 的关系。让我们从头开始。
Project Jupyter 是一个伞形组织,负责监督几个交互式和高度可视化的软件开发界面的设计,这些界面允许以可视化的方式执行代码。
Project Jupyter 是一个非营利性开源项目,于 2014 年从 IPython Project 衍生而来,因为它发展为支持跨所有编程语言的交互式数据科学和科学计算。Jupyter 将始终是 100% 开源软件,所有人都可以免费使用,并根据 修改后的 BSD 许可证 的自由条款发布。
Jupyter 项目的强大之处在于内核的形式,内核充当“计算引擎”来执行文档中包含的代码。最初的内核是为 Python 准备的,名为 IPython,尽管还有更多可用内核。截至今天,项目维基 上列出了 128 个内核,涵盖从 Ansible 到 Fortran 的所有内容。

Jupyter 项目中更可见的部分是其用户界面 (UI),开发人员可以在内核支持的任何语言中进行可视化编程。该项目伞形下最著名的 UI 是 Jupyter Notebook,用户在笔记本中开发软件。
笔记本将基于控制台的交互式计算方法扩展到一个全新的方向,提供了一个基于 Web 的应用程序,适用于捕获整个计算过程:开发、记录和执行代码,以及交流结果。
Jupyter Notebook 被认为是该组织的旗舰项目,自 2011 年开始以来,它对代码可视化产生了巨大的影响。最近,JupyterLab 作为 Jupyter UI 未来更模块化的设计而推出。
Jupyter Notebook 和 JupyterLab 都允许以更可视化的方式进行 Python 开发,并且是编辑代码的强大方式。
为什么选择 JupyterLab 而不是 Jupyter Notebook?
Jupyter Notebook 的悠久历史也带来了一些灵活性方面的代价。
根据 Jupyter 的博客,该项目的背景可以追溯到 2011 年,这使得它“难以定制和扩展”。当我更多地了解所有这些工具和标准是如何长期发展起来的时,这很有道理。早在 2001 年,特定于 Python 的笔记本标准 IPython 就由 Fernando Perez 开发。IPython 维护了一种以 Python 语言编写笔记本的标准方法,近年来,Jupyter 项目成为渲染它们的场所。Jupyter Notebook README 给出了一个摘要
Jupyter notebook 是 Project Jupyter 的一个语言无关的 HTML 笔记本应用程序。2015 年,Jupyter notebook 作为 IPython 代码库的 The Big Split™ 的一部分发布。IPython 3 是最后一个主要的单体发布版本,其中包含语言无关的代码,例如 IPython notebook,以及特定于语言的代码,例如 用于 Python 的 IPython 内核。由于计算跨越多种语言,Project Jupyter 将继续在此仓库中开发语言无关的 Jupyter notebook,并在社区的帮助下,开发特定于语言的内核,这些内核可以在它们自己的离散仓库中找到。[The Big Split™ 公告] [Jupyter Ascending 博客文章]
2018 年,JupyterLab 项目宣布它已 为用户做好准备。它决定最近才开始,当时围绕标准化以及如何提供高性能笔记本体验有更多的确定性,这对我来说很有意义。它还通过构建在 扩展系统 之上,解决了 Jupyter Notebook 的扩展挑战,这将摆脱扩展 Notebook 中面临的挑战。
这一切与 Python 编程有什么关系?Python 是一种非常流行的编程语言,它在数据科学分析中越来越受欢迎。任何 IPython 文件 (.ipynb) 都可以在 Jupyter 项目中运行,以获得令人难以置信的开发体验。
项目 | 描述 |
---|---|
Project Jupyter | “Project Jupyter 的存在是为了开发开源软件、开放标准以及用于跨数十种编程语言进行交互式计算的服务。” |
Jupyter Notebook | “笔记本将基于控制台的交互式计算方法扩展到一个全新的方向。” |
JupyterLab | “JupyterLab 是下一代基于 Web 的 Project Jupyter 用户界面。” |
IPython | “IPython 为交互式计算提供了丰富的架构。” |
如果所有这些项目名称都让你感到困惑,请记住以下几点
- Project Jupyter 提供了可视化编程语言的标准。
- Jupyter Notebook 是一款非常流行的可视化软件。
- JupyterLab 是 Jupyter Notebook 的现代重新设计。
- IPython 提供了在这些项目中运行 Python 代码的工具。
根据 JupyterLab 文档,它最终将取代 Jupyter Notebook。
通过教程尝试一下
既然你对术语和历史有了更多的了解,请尝试在 PyCon 上展示的“IPython 和 Jupyter 深度”教程。我发现它是 JupyterLab 的绝佳入门教程。
安装后(我使用 Anaconda 管理安装),在 JupyterLab 中导航到“1 - Beyond Plain Python.ipynb”。

魔法是神奇的
JupyterLab 具有特别强大的功能,以 % 符号开头。你可以运行的许多功能中的每一个都使 JupyterLab 成为我见过的最灵活的开发环境。
当您仍在上面加载的笔记本中时(从上面的屏幕截图放大),按 Option+Return(或 Alt+Enter)创建一个新单元格

然后使用感叹号 (!)——我最喜欢的魔法——将命令发送到当前目录中的终端会话。例如,运行 !ls 列出本地文件

当您将 Python 与您的魔法混合使用时,这可能会变得更加强大;例如,您可以将本地文件拉入 Python 变量中

虽然 Python 有一个强大的 os 模块,允许您与开发环境交互,但可以选择使用 Bash 语法快速拉取您想要的数据,同时将其保留在 Python 对象类型(如字符串列表)中,这很有趣。
要点
如果您曾经想使用 Jupyter Notebook 来探索 Python,我希望本文能帮助您了解生态系统是如何发展的,并且您决定立即投入使用 JupyterLab。如果您是 Python 的新手,并且也是命令行的新手,JupyterLab 将使您从一开始就感觉自己拥有超能力。我从未像通过本教程那样,通过用户界面获得如此多的学习乐趣。换句话说,JupyterLab 感觉就像玩开启了作弊码的电子游戏。你可以做任何看起来可能的事情!
如果您更熟悉基于 Linux 的命令行界面,请务必在开始时大量使用感叹号运算符。编写 !ls -la 将调用您的默认终端模拟器,并让您运行命令以确保您了解自己身在何处以及正在做什么。
我强烈建议在享受本教程的同时,探索更多 JupyterLab 中可用的魔法。
3 条评论