JupyterLab 教 Python 开发者魔法

JupyterLab 是 Jupyter Notebook 的继任者,感觉就像玩开启了作弊码的电子游戏。
238 位读者喜欢这篇文章。
How to write a web service using Python Flask

Yuko Honda 在 Flickr 上发布。CC BY-SA 2.0

我在克利夫兰的 PyCon 2019 上遇到了很多出色的人,并学到了很多关于 Python 社区如何运作的知识。但我主要的技术收获与 JupyterLab 的魔力有关,它被描述为 Jupyter Notebook 的一个基于 Web 的用户界面,Jupyter Notebook 是一个应用程序,“允许你创建和分享包含实时代码、公式、可视化和叙述性文本的文档。”

当我在 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 tutorial

魔法是神奇的

JupyterLab 具有特别强大的功能,以 % 符号开头。你可以运行的许多功能中的每一个都使 JupyterLab 成为我见过的最灵活的开发环境。

当您仍在上面加载的笔记本中时(从上面的屏幕截图放大),按 Option+Return(或 Alt+Enter)创建一个新单元格

Make a new cell

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

List local files

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

Pull local files into a Python variable

虽然 Python 有一个强大的 os 模块,允许您与开发环境交互,但可以选择使用 Bash 语法快速拉取您想要的数据,同时将其保留在 Python 对象类型(如字符串列表)中,这很有趣。

要点

如果您曾经想使用 Jupyter Notebook 来探索 Python,我希望本文能帮助您了解生态系统是如何发展的,并且您决定立即投入使用 JupyterLab。如果您是 Python 的新手,并且也是命令行的新手,JupyterLab 将使您从一开始就感觉自己拥有超能力。我从未像通过本教程那样,通过用户界面获得如此多的学习乐趣。换句话说,JupyterLab 感觉就像玩开启了作弊码的电子游戏。你可以做任何看起来可能的事情!

如果您更熟悉基于 Linux 的命令行界面,请务必在开始时大量使用感叹号运算符。编写 !ls -la 将调用您的默认终端模拟器,并让您运行命令以确保您了解自己身在何处以及正在做什么。

我强烈建议在享受本教程的同时,探索更多 JupyterLab 中可用的魔法

标签
I'm happiest at a microphone
Matt 曾是 EMC 存储专家、VMware vExpert,以及其他专有技术的早期爱好者。他现在专注于开源和 DevRel 采用。

3 条评论

ipython magic 是 ipython 解释器的一个特性,长期以来在终端以及 Jupyter Notebook 中都可用。它们并非 Jupyter Lab 独有。虽然 Jupyter Lab 有一些很酷的功能,更像一个 IDE,但我不认为 magic 是它的卖点,因为您可以在任何使用 ipython 而不是标准 Python 解释器的地方使用它们。!ls 和其他 os 命令也是如此,它们在 ipython 中运行,但在没有更冗长的 os 库的 python 中则不运行。

感谢您提到这一点,Nicholas。我一开始错过了这部分历史。

很高兴看到这些惯例有多么深入和久远的历史。我很高兴能更多地了解 Jupyter 生态系统。

回复 作者 Nicholas Reith (未验证)

不知道 jupyter lab,很有趣

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.