我有一个混合了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/
但是没有创建这样的目录,并且没有文件。
有相关帖子(1 ,2 ,3 ,4 )但他们要么不解决这个具体问题,要么提到NBconvert是一个单独的图书馆的旧时代。
This document解释了如何以旧的做事方式解决这个问题。
我试过用:
ipython nbconvert --config mycfg.py
使用
c = get_config()
c.NbConvertApp.notebooks = ["mynotebook.ipynb"]
在.py
文件中,但这就像我所拥有的那样。
我正在寻找的是一种使png文件,最好是svg文件进入文件夹的方法。理想情况下尽可能容易!
答案 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,它知道无论如何要看。