使用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 TestNG跨浏览器测试在启动第一个浏览器后失败   java如何根据本地存储数据设置默认下拉值和选择   数组Java程序以打印字符串中只有一次可用的字符   java A4j:commndButton和A4j:commandLink未显示在输出中   javajavax。servlet。Apache Karaf 2.3.0中的http包   如果对象是可序列化/可打包的,则java是可序列化/可打包的数组   如果实现了自动关闭,java Helper将调用close()?   java不能转换为org。springframework。奥姆。冬眠4。LocalSessionFactoryBean   java Eclipse不会启动JVM不兼容   java Hibernate关系错误   java我应该设置“从池中获取连接”的超时吗?   java Spring引导连接到docker服务mongodb   java NullPointerException从何而来?   java JSP使src url的结尾成为javascript变量   java spring父上下文和子上下文之间有什么区别?