新编辑神器,可以在终端运行 Jupyter Notebook 了!
The following article is from Python数据科学 Author 东哥起飞
在我初学Python
的时候,一直惯用着安装式的编辑器软件,比如PyCharm
和Spyder
。并且,一直以为编辑器都是这种形式的,有的区别只是体验和功能上的差异。
直到我后来遇到了Jupyter Notebook
,发现它是基于web来运行代码的,并且可以还写markdown
的文本,直接打破我对编辑器的认识。
然而,最近又发现了一个新的Jupyter Notebook
工具,再次打破我的认识。使用它可以不用在web敲代码了,它可以让我们在终端命令行使用Jupyter Notebook
web和终端对比
更神奇的是,它也支持代码交互和markdown
的富文本。虽然代码在哪敲都是敲,并没有改变本质,但真没想到基于web的Jupyter Notebook
有一天还可以在命令行中运行,和大家分享一下,说不定哪天能用上。
这个工具就是 nbterm
,下面来介绍下。
GitHub链接:https://github.com/davidbrochart/nbterm
nbterm的使用姿势
1. 安装
支持各种软件管理包的下载。
$ pip install nbterm
或者conda
$ mamba install nbterm -c conda-forge
除此外,还需要一个内核,比如适用于Python
的ipykernel
或xeus-python
,适用于C++的xeus-cling
。
2. 启动notebook
$ cd ~/nbterm #你的nbterm存储路径
$ nbterm my_notebook.ipynb
然后使用终端来敲代码:
3. nbterm基本命令
输入help
可以看到nbterm
命令的其它命令选项。
$ nbterm --help
Usage: nbterm [OPTIONS] [NOTEBOOK_PATH]
Arguments:
[NOTEBOOK_PATH] Path to the notebook. [default: ]
Options:
--no-kernel Don't launch a kernel.
--run Run the notebook.
--save-path TEXT Path to save the notebook.
--version Show the version and exit.
--help Show this message and exit.
比如,在批处理模式中运行notebook
所有单元。
$ nbterm --run my_notebook.ipynb
如果未使用--save-path
指定新名称,则会自动生成名为my_notebook_run.ipynb
的新文档。
嵌入式用法
除了上面那样操作以外,也可把nbterm
当作库嵌入到自己的程序中,所有协作者都可以进行编辑。比如你可以重新排列单元格,然后一起运行:
import asyncio
from nbterm import Notebook
nb = Notebook("my_notebook.ipynb")
nb.cut_cell(3)
nb.paste_cell(1)
asyncio.run(nb.run_all())
nb.save()
一个轻量级Jupyter的尝试
这个工具的创作者叫David Brochart,是一位任职于quantstack的软件开发员,致力于Jupyter
生态库的开发,比如nbclient
、jupyter-client
、ipykernel
、ipywidgets
等。
他本人提到,nbterm
不会重用Jupyter的基本组件,如jupyter-client
和nbformat
,而是想要尝试不涉及向后兼容限制的新项目,或者说测试一下开发一个轻量notebook客户端的难度,所以现在的nbterm
还是一个相当精简的代码库。
显然,nbterm
对于notebook
而言还是有一些功能需要完善的,比如终端虽然只限制于显示字符。不过ASCII码可以使这个问题迎刃而解。
大佬已经使用ASCII
后端对matplotlib
图形库尝试了绘制:
但这个绘制目前还只能在MacOS
上使用。
除此之外,该项目也提出了要添加一些类似ipywidgets
的交互功能,以及更多简单的滑块、按钮、菜单等GUI部件等。
这个工具虽然目前来看可用性不强,但也确实是一个启发。就像我当时觉得web敲代码很奇怪一样,随着逐渐熟悉也就习惯了,只要它香我在哪敲都行,命令行里敲还能顺便装一下
参考链接:
[1] https://github.com/davidbrochart/nbterm
[2] https://blog.jupyter.org/nbterm-jupyter-notebooks-in-the-terminal-6a2b55d08b70
- EOF -
觉得本文对你有帮助?请分享给更多人
推荐关注「Python开发者」,提升Python技能
点赞和在看就是最大的支持❤️