Jupyter笔记本是一种越来越流行的编写、执行、记录和分享代码以及交流结果的方式,特别是在Python生态系统中。本文将介绍运行Jupyter笔记本的四种方式。它还将谈到每种方式的一些优点和缺点。笔记本的生态系统正在扩大,有很多选择,所以让我们深入了解一下。
首先,什么是笔记本?
在我们看这些选择之前,让我们回顾一下什么是Jupyter笔记本。笔记本是代码、文档和输出的组合。它本质上是一个捕获的与解释器的互动会话。它包含包含代码或描述性文本的单元,以及执行代码的输出。 由于一个单元可以在一个交互式会话中执行多次,笔记本将包含最近的执行和结果。笔记本文件通常是由作者通过互动过程创建的,使用网络应用程序来编写笔记本文件。正如你在下面的架构图中所看到的,笔记本服务器可以与多个内核通信。内核是笔记本运行的进程,每个内核都是独立的。
Jupyter笔记本的架构
Jupyter支持其他语言,但现在,我们假设我们在谈论Python。然而,本文中没有任何内容要求Python成为内核的首选语言。
用户与笔记本服务器交互(通常,但不总是通过网络浏览器,你很快就会看到),以编辑笔记本中的单元。这些单元格可以包含代码或文档,如markdown。服务器确保所有用户的编辑和操作都在内核中执行。当一个单元被执行时,内核的输出被捕获。笔记本服务器将输出保存在一个文件中,以.ipynb结尾。该文件格式是JSON。你可以在文本编辑器中打开它,并通过版本控制来保存它(尽管它不是很干净,而且可能很乱,难以区别,特别是对于像图片或图表这样的大输出)。你也可以把它发送给其他人来打开或使用。
你如何看待一个笔记本?
首先,让我们把查看笔记本的概念与实际执行它分开。由于笔记本文件包含来自解释器会话的所有数据,它可以被渲染成人类可读的格式来显示这些数据,而无需重新执行代码。因此,查看笔记本比执行笔记本要容易得多,因为你不需要一个内核。你只要把输入的json转换成你想要的任何输出即可。这是一个与他人分享你的代码和输出的好方法,如果他们只想查看,这就是他们所需要的一切。执行的笔记本可以通过一些工具来共享。
nbconvert
该 nbconvert
工具会将笔记本转换为各种输出格式。根据环境中安装的软件包,笔记本可以被呈现为html、PDF、LaTeX和其他格式。它也可以从命令行中执行笔记本,不需要运行服务器,但它并不打算用于交互式使用。转换后的笔记本可以发送给其他人,让他们使用任何他们喜欢的工具,如网络浏览器或PDF浏览器进行查看。
nbviewer
nbviewer网站是共享笔记本的另一个选择。可以把它看作是一个基于网络的nbconvert
工具。
其他服务(如GitHub
许多服务都支持将笔记本渲染成网页。例如,如果.ipynb文件是你正在浏览的仓库的一部分,GitHub将为你呈现你的笔记本。例如,我把我的许多文章放在GitHub上,其中一些就在浏览器中呈现。
如何运行或执行一个Jupyter笔记本?
好了,关于查看笔记本的内容已经足够了,如果我们想实际创建新的笔记本或执行已经创建的笔记本,我们有什么选择呢?要使用一个笔记本,你需要运行一个笔记本服务器。笔记本服务器将启动必要的内核,通过你的网络浏览器(或其他创作工具)为你提供一个用户界面,并将数据来回发送给内核执行。
让我们来看看执行笔记本的四种不同选择。
标准Jupyter服务器
你的第一个选择是运行一个标准的Juypyter笔记本服务器。你可以通过在你的Python环境中安装服务器,然后运行服务器并通过浏览器连接到它来实现。
Jupyter 笔记本
标准的Jupyter笔记本是一种可靠而简单的执行笔记本的方式,也是我大多数时候倾向于使用的。你可以使用pip
,也可以使用Anaconda的conda
来安装它。如果你不选择conda
,我建议使用类似pyenv和虚拟环境的东西来设置和运行较新版本的Python。Jupyter项目在其文档中推荐使用Anaconda。
请注意,Jupyter笔记本是相当可配置的,所以一旦你对基本设置感到满意,你可以检查一下扩展。
JupyterLab
Jupyter项目的第二个选择是JupyterLab,它是下一代的笔记本服务器。它提供了一个更复杂的前端,对于初级用户来说可能更容易理解。它还支持扩展。
Jupyter笔记本和JupyterLab都被作为JupyterHub的一部分来支持,这是一种为多个用户提供Jupyter笔记本的方式。如果你打算让一个班级或工作组中的多个用户同时运行笔记本,而且你不希望用户必须运行自己的Jupyter笔记本或JupyterLab实例,你可以考虑这样做。
IDE整合
执行笔记本的第二个方法是通过你的集成开发环境(IDE)。许多IDE支持Jupyter笔记本,有时是通过一个插件。例如,Pycharm在专业版中支持笔记本。如果你使用微软的Visual Studio Code,也可以使用Jupyter支持。对于其他IDE,请检查对Jupyter的支持。如果它缺乏支持,你可能对下一个选项非常感兴趣。
托管服务
执行笔记本的第三种流行方式是通过托管服务。有了托管服务,你不需要维护服务器。你可以从任何地方访问你的笔记本。与他人分享代码可能更容易,特别是一些提供协作编辑同一笔记本文件的服务。其中一些是免费的或提供免费版本。有些支持先进的功能,如增强的可视化,更容易的环境设置,GPU支持,以及其他类似IDE的功能。有了这些环境,你可以从头开始创建一个笔记本,或者上传一个现有的.ipynb文件,所以你可以从一个环境(或你自己的设置)中获取工作,并将其转移到服务中。如果你使用的是源代码控制(我希望你是),那么你可以通过克隆你的存储库来轻松地添加你的笔记本。
- DeepNote- 一个有免费版本的数据科学笔记本。支持与其他用户的合作和一些先进的集成。
- Cocalc- 一个针对教室设置的服务,支持各种语言和环境
- Replit- 带有协作工具的在线IDE,支持超过50种语言,有免费版本。
- Datalore(来自JetBrains)--一个具有PyCharm功能的Jupyter笔记本实现,免费版本。
- Google Colab- 来自Google的免费Jupyter笔记本,有专业版本。
这似乎是一个竞争激烈的领域,不断有新的选择出现。
命令行
最后但并非最不重要的是,你可能是一个命令行书呆子,想知道你是否必须使用浏览器或花哨的IDE。事实证明,你也有一个选择。nbterm项目允许你从命令行交互地运行Jupyter笔记本。
总结
正如你所看到的,有许多方法可以执行Jupyter笔记本。根据你的需要,你应该能够找到一个适合你的解决方案。我鼓励你尝试一下,看看它们是否能帮助你提高工作效率。
The post4 ways to run Jupyter notebooksappeared first onwrighters.io.