我有一个小程序,基本上做各种统计计算,打印出结果和图表.
目前,一个方便的方法来获得我的程序的一个很好的pdf输出是使用魔术命令%matplotlib inline在Jupyter IPython Notebook中运行我的代码,并通过“PDF via LaTex(.pdf)”保存为pdf
但是,问题是我每次运行程序时都必须手动完成.另外,我无法将程序作为二进制可执行程序提供给其他人,这是我的最终目标.
有没有办法以编程方式执行此操作?为了清楚起见,我想要的只是以pdf格式输出我的程序,以便在运行可执行文件时输出为pdf.我不希望最终用户创建ipython笔记本.最终用户无权访问源代码.
解决方法
截至目前,还没有一种编程语言API可以将笔记本转换为PDF.但是,存在一个名为
nbconvert的命令行实用程序.它具有与Web界面的格式转换器相同的功能.要转换为PDF,您可以使用jupyter nbconvert notebook.ipynb –to pdf.
幸运的是,Python有一个方便的subprocess module,它允许您生成新的进程,检查它们的输入和输出,并获得它们的返回代码.所以你可以这样做:
import subprocess subprocess.call("jupyter nbconvert notebook.ipynb --to pdf")
一种hacky方式,但它会工作.如果您使用的是Windows,则可能需要将额外的kwarg shell = True添加到subprocess.call()