2014-02-26 60 views
7

我有一個ipython筆記本,其中包含SVG和PNG圖形的混合。我可以毫無困難地將它導出到html,但它將圖像作爲編碼文本嵌入到.html文件的主體中。將ipython筆記本轉換爲帶有單獨圖像的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文件

,但那是作爲FAS,因爲我已經得到了。

我在找的是一種讓png文件,最好是svg文件進入文件夾的方法。理想情況下儘可能輕鬆!

+0

有一個[extractoutput](https://github.com/ipython/ipython/blob/master/IPython/nbconvert/preprocessors/extractoutput.py)預處理器,可以將圖像保存爲單獨的文件,但是您需要修改[HTML輸出模板](https://github.com/ipython/ipython/tree/master/IPython/nbconvert/templates/html)以瞭解提取的圖像。 –

+1

[PR 5245](https://github.com/ipython/ipython/pull/5245)爲此修復了模板,因此啓用ExtractOutputPreprocessor應該是現在唯一必要的步驟。 –

回答

4

感謝Thomas K的推動,我在推動這項工作取得了一些成功。考慮這個原始答案,直到我有機會解決問題的所有細微差別爲止。可能會有錯誤,但這是我對發生的事情的理解。

要覆蓋你需要指定一個配置文件,並調用它 ipython nbconvert --config mycfg.py默認 ipython nbconvert --to html mynotebook.ipynb 命令的默認行爲。 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.ExtractOutputPreprocessorextractoutput.py,這也是在同一目錄中的筆記本電腦(雖然我不認爲它需要)。

extractoutput.ExtractOutputPreprocessorextractoutput.py一個函數,它指定如何輸出將被處理。

在我的情況下,這個文件的內容完全取自IPython repo做一些小修改。第22行(​​from .base import Preprocessor)產生

ValueError: Attempted relative import in non-package

error,因爲它不知道到哪裏尋找包。當改爲

fromIPython.nbconvert.preprocessors.base import Preprocessor

那麼它的工作原理,所有的圖像資源被放入mynotebook_files目錄。

在這種情況下,我不需要編輯HTML output template,它無論如何都知道在哪裏看。