使用单独的图像将ipython笔记本转换为html

Ben*_*Ben 9 ipython ipython-notebook

我有一个混合了SVG和PNG图形的ipython笔记本.我可以毫不费力地将它导出到html,但它将图像作为编码文本嵌入.html文件正文中.

我打电话给:

ipython nbconvert --to html mynotebook.ipynb
Run Code Online (Sandbox Code Playgroud)

命令行的输出包括:

[NbConvertApp] Converting notebook mynotebook.ipynb to html
[NbConvertApp] Support files will be in mynotebook_files/
Run Code Online (Sandbox Code Playgroud)

但是没有创建这样的目录,并且其中没有文件.

有相关帖子(1 ,2 ,3 ,4 ),但他们要么不解决这个具体问题,或参阅昔日当NBconvert是一个单独的库.

本文档解释了如何在旧的做事方式上解决这个问题.

我试过用:

ipython nbconvert --config mycfg.py
Run Code Online (Sandbox Code Playgroud)

c = get_config()
c.NbConvertApp.notebooks = ["mynotebook.ipynb"]
Run Code Online (Sandbox Code Playgroud)

.py文件中,但这就像我所拥有的那样.

我正在寻找的是一种方法,使png文件,最好是svg文件,进入一个文件夹.理想情况下尽可能容易!

Ben*_*Ben 6

感谢Thomas K的推动,我已经取得了一些成功。在我有机会了解问题的所有细微差别之前,请将此视为原始答案。可能会有错误,但这是我对正在发生的事情的理解。

要覆盖默认命令的默认行为, ipython nbconvert --to html mynotebook.ipynb 您需要指定一个配置文件并像这样调用它 ipython nbconvert --config mycfg.pymycfg.py与您的笔记本位于同一目录中的文件在哪里。我的看起来像这样:

c = get_config()
c.NbConvertApp.notebooks = ["mynotebook.ipynb"]
c.NbConvertApp.export_format = 'html'
c.Exporter.preprocessors = ['extractoutput.ExtractOutputPreprocessor']
Run Code Online (Sandbox Code Playgroud)

["mynotebook.ipynb"]我要转换的文件或文件列表在哪里。在这种情况下,控制笔记本如何转换的部分'extractoutput.ExtractOutputPreprocessor'

extractoutput.ExtractOutputPreprocessor指的是extractoutput.py,它也与笔记本位于同一目录中(尽管我认为不需要)。

extractoutput.ExtractOutputPreprocessorextractoutput.py指的是指定如何处理输出的函数。

就我而言,该文件的内容完全取自IPython 存储库,并进行了一些小修改。第 22 行 ( from .base import Preprocessor) 产生一个

ValueError: Attempted relative import in non-package

错误是因为它不知道在哪里寻找包。当更改为

fromIPython.nbconvert.preprocessors.base import Preprocessor

然后它就可以工作并且所有图像资源都被放入该mynotebook_files目录中。

在这种情况下,我不需要编辑HTML 输出模板,它无论如何都知道在哪里查看。