NBTERM:捷克特笔记本电脑

2021-04-28 11:05:35

Jupyter Notebooks主要针对基于Web的用户界面(例如jupyterlab或经典笔记本)了解。它们提供了极大的用户体验,允许丰富的输出渲染,通过例如,提供交互性。小部件,并可以使用远程内核。

如果像我一样,您往往永远不会在工作流程中留下终端,可能会缺少一个与Jupyter笔记本互动的工具,而无需切换到Web浏览器。虽然Jupyter Console已允许您在终端中与Jupyter内核进行交互,但它与shell比笔记本更媲美。

笔记本电脑与控制台的不同之处在于它绑定到文档,交错文本和可执行代码。这使得代码表示更具结构化,同时允许交互性。好吧,直到最近,终端不可能。但今天,我们很自豪地宣布nbterm!

如果您不通过笔记本参数,您也可以创建一个新的。几乎立即,您将获得一个全屏应用程序,如下所示:

$ nbterm --help使用:nbterm [选项] [notebook_path]参数:[notebook_path]笔记本的路径。 [默认值:]选项:--no-kernel don' t启动内核。 - 运行笔记本。 - 保护笔记本的路径文本路径。 --version显示版本并退出。 - help显示此消息并退出。

例如,可以使用以下方式在批处理模式下运行笔记本电脑的所有单元格:

如果您没有使用-save-path指定新名称,将创建一个名为my_notebook_run.ipynb的新笔记本,所有单元格输出填充。此执行模式类似于NBClient库,但可以在命令行中访问。

也可以将其用作库并将其嵌入您自己的应用程序中。此外,所有用户交互都可以脚本。例如,您可以重新排列单元格,然后运行这样的所有单元格:

虽然您可能无法判断差异,但NTTM不会重用基本jupyter组件,例如jupyter-client和nbformat(分别实现Jupyter内核协议和Jupyter Notebook格式)。原因是Nbterm被开始作为玩具项目,看看有一个简单的笔记本客户端将有多难。

作为Jupyter贡献者,我主要参与这些包裹的维护和现代化。我想尝试没有向后兼容性约束的新项目。这导致了一个相当瘦的代码基础,其简单性使其适合作为其他语言实现的参考。

虽然Nbterm显然比笔记本电脑更受限制,但有几个潜在的改善方向。拥有富人(ER)输出是其中之一。终端几乎仅限于显示角色,但人们用ASCII艺术做了很棒的事情。尝试已经尝试使用Matplotlib的ASCII后端。虽然现在它只是在摩托车上,一些终端能够显示真实图片,并且存在iterm2的Matplotlib后端。

另一个很好的功能是添加一些交互性。在笔记本中,通常使用窗口小部件实现这一点,但它们本质上是基于Web的,因此这不是一个选项。也许我们可以想象类似于终端的ipywidgets的东西,并且有简单的东西,如滑块,按钮,菜单等。我正在关注富豪的富有的库,您可以在未来创建仪表板和GUI应用程序。

Nbterm真的有你已经知道和爱的笔记本的外观和感觉,(几乎)相同的关键绑定,所以你不会丢失。作为编码器,我们喜欢终端,以及类似于提示 - 工具包和富有Python的库,或C ++中的CPP终端,使得可以构建美丽的应用程序。您可以使用您喜欢的包管理器安装Nbterm:

务必经常更新,因为它每天都在改善。如果您想贡献,请在GitHub存储库上取得联系。

David Brochart是Quantstack的科学软件开发人员。 他是Jupyter Ecosystem中几个库的贡献者,例如nbclient,jupyter-client,jupyter-server,ipykernel和ipywidgets。