关于python:如何导出和保存链接的Jupyter笔记本?

How to export and preserve linked Jupyter notebooks?

我有多个相互链接的Jupyter笔记本,因此Notebook1.ipydb包含一个指向Notebook2.ipydb的链接,标记为[Notebook2](Notebook2.ipynb),反之亦然。

通过nbconvert将所有笔记本导出为HTML时,将保留指向Notebook2.ipynb的链接。 我想将该链接更改为导出的Notebook2.html,以便链接的HTML文件充当静态网站。

我尝试使用get_ipython().__class__.__name__检测我是否在iPython中运行,但它在转换为HTML之前执行此代码。

有没有办法检测静态文件以有条件地呈现正确的降价? 还有另一种方法来保存链接的笔记本吗?


实际上只有两种选择。 一种是首先链接到Notebook2.html,另一种是为nbconvert创建自定义预处理器。

1
2
3
4
5
6
7
8
9
10
11
12
from nbconvert.preprocessors import Preprocessor
import re


class CustomPreprocessor(Preprocessor):

    def preprocess_cell(self, cell, resources, index):

        if 'source' in cell and cell.cell_type =="markdown":
            cell.source = re.sub(r"\[(.*)\]\(\1\.ipynb\)",r"[\1](\1.html)",cell.source)

        return cell, resources

将其保存到文件,然后添加到您的nbconvert配置文件(位于~/.jupyter/jupyter_nbconvert_config.py或可以使用命令jupyter nbconvert --generate-config生成)行:

c.HTMLExporter.preprocessors = ['CustomPreprocessor.CustomPreprocessor']

这假定自定义预处理器文件名为CustomPreprocessor,并且与您尝试转换的文件位于同一目录中。 您也可以将其正确安装为模块。