使用jupytext和papermill将脚本参数化并作为笔记本运行
papermill-jupytext的Python项目详细描述
使用jupytext和paperpill将脚本参数化并作为笔记本运行
这是关于如何使用jupytext和papermill将脚本作为笔记本运行的正在进行的研究。
相应的github问题是Jupytext #231和Papermill #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'])"