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

时间:2014-02-26 10:03:17

标签: ipython ipython-notebook

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

我在打电话:

ipython nbconvert --to html mynotebook.ipynb

命令行的输出包括:

[NbConvertApp] Converting notebook mynotebook.ipynb to html
[NbConvertApp] Support files will be in mynotebook_files/

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

有相关帖子(1234 )但他们要么不解决这个具体问题,要么提到NBconvert是一个单独的图书馆的旧时代。

This document解释了如何以旧的做事方式解决这个问题。

我试过用:

ipython nbconvert --config mycfg.py

使用

c = get_config()
c.NbConvertApp.notebooks = ["mynotebook.ipynb"]

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

extractoutput .ExtractOutputPreprocessor是指extractoutput.py,它与笔记本位于同一目录中(虽然我认为不需要)

extractoutput .ExtractOutputPreprocessor 是指extractoutput.py中的一个函数,用于指定如何处理输出。

在我的情况下,此文件的内容完全取自IPython repo并进行了少量修改。第22行(​​from .base import Preprocessor)产生

ValueError: Attempted relative import in non-package

error因为它不知道在哪里寻找包。更改为

from IPython.nbconvert.preprocessors .base import Preprocessor

然后它可以工作,所有图像资产都放入mynotebook_files目录。

在这种情况下我不需要编辑HTML output template,它知道无论如何要看。