使用jupytext和papermill将脚本参数化并作为笔记本运行

papermill-jupytext的Python项目详细描述


使用jupytext和paperpill将脚本参数化并作为笔记本运行

Build Statuscodecov.ioLanguage grade: PythonPypipyversionsBinder

这是关于如何使用jupytext和papermill将脚本作为笔记本运行的正在进行的研究。

相应的github问题是Jupytext #231Papermill #365

注意下面是一个Bash Jupyter笔记本,它是tested on our CI如果愿意,也可以在Binder上以交互方式打开并运行它

cd demo

jupytext和paperpill

可以使用jupytext将脚本转换为笔记本,然后使用papermill运行它。在这里,我们使用--set-kernel -来使用与当前python环境匹配的内核。

jupytext script.py -o notebook.ipynb --set-kernel -
papermill notebook.ipynb executed_notebook.ipynb -p integer 2 -p text 'updated text'
python -c "import nbformatwith open('executed_notebook.ipynb') as fp:    nb = nbformat.read(fp, as_version=4)print(nb.cells[-1]['outputs'][0]['text'])"

使用paperpill在脚本中插入参数

paperpill需要内核中的语言信息来注入笔记本中的参数,因此在这种情况下,我们还需要为笔记本设置一个内核

jupytext script.py -o notebook.ipynb --set-kernel -
papermill notebook.ipynb notebook_with_parameters.ipynb --prepare-only -p integer 3 -p text 'updated text, v3'

注入参数后,我们可以将笔记本转换回脚本,并删除内核信息:

jupytext notebook_with_parameters.ipynb -o script_with_parameters.py --update-metadata '{"kernelspec":null, "jupytext":null}'
cat script_with_parameters.py

最后,我们使用Python解释器运行脚本:

python script_with_parameters.py

走向Papermill+JupyText?

使用papermill_jupytext包,我们可以打开地址为txt://的Jupytext脚本指向当前Python环境的内核被注入到没有内核的文档中

papermill txt://script.py executed_notebook.ipynb  -p integer 4 -p text 'updated text, v4'
python -c "import nbformatwith open('executed_notebook.ipynb') as fp:    nb = nbformat.read(fp, as_version=4)print(nb.cells[-1]['outputs'][0]['text'])"

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何运行一个在播放歌曲的同时创建和更改UI的方法?   eclipse错误:无法找到或加载主类Java,因为类文件anme和类名不同?   两个数字相加得到一个值的java算法   java我可以更改字符串吗?   java Hibernate 5.2:以编程方式从其他jar加载映射   java如何访问随机跳转到固定位置的二进制文件   java是解析器实现中文档的功能   Javasocket的两端齐平   java查找将两个非常大的整数之和除以相等块的步骤   java如何在Restlet中调用带超时的异步HTTP客户端   java如何从servlet请求将hashmap传递给jsp。塞塔提布特   java Spring MVC HTTP状态500–内部服务器错误,Servlet。servlet[dispatcher]的init()引发异常   java即使没有alpha通道,如何将PNGFiles加载为ARGB_8888?   java将subscribe的返回类型映射到其他类型   javascript如何在安卓 WebView中启用longpress操作下载图像?   java将字符串作为hashmap值的一部分添加到StringList中   JavaSpringAOP:代表类型声明其他方法或字段   Java将二进制序列转换为字符   java使用ApachePOI获取最后一行值   为什么要在FPS(每秒帧数)跟踪器中添加时间?(爪哇)