Я хотел бы запустить nbconvert с препроцессором, который удаляет ячейки, помеченные тегом «пропуск». Я могу сделать это из командной строки, но когда я пытаюсь использовать API nbconvert в записной книжке, у меня возникают проблемы.
Пример
Следуя примеру в документация , я получаю ноутбук для работы.
from urllib.request import urlopen
url = 'http://jakevdp.github.com/downloads/notebooks/XKCD_plots.ipynb'
response = urlopen(url).read().decode()
import nbformat
nb = nbformat.reads(response, as_version=4)
Я изменю одну ячейку, чтобы она пропускалась в выводе.
nb.cells[1].metadata = {'tags': ['skip']}
Командная строка
Сохранение файла, а затем запуск nbconvert изкомандная строка:
nbformat.write(nb, 'nb.ipynb')
%%bash
jupyter nbconvert --to latex \
--TagRemovePreprocessor.remove_cell_tags='{"skip"}' \
--TagRemovePreprocessor.enabled=True \
'nb.ipynb'
Это работает. Выходной файл nb.tex
не содержит ячейку с тегом «пропуск».
API
Теперь давайте попробуем использовать его вместо API. Во-первых, без какой-либо предварительной обработки:
import nbconvert
latex, _ = LatexExporter().from_notebook_node(nb)
print(latex[:25])
\ documentclass [11pt] {arti
Опять без проблем. Преобразование работает.
Теперь пытаюсь использовать тот же препроцессор, который я использовал из командной строки:
from traitlets.config import Config
c = Config()
c.RemovePreprocessor.remove_cell_tags = ('skip',)
c.LatexExporter.preprocessors = ['TagRemovePreprocessor']
LatexExporter(config=c).from_notebook_node(nb)
На этот раз я получаю:
ModuleNotFoundError: Ни один модуль с именем TagRemovePreprocessor
Насколько я вижу, этот код соответствует примеру кода в документации , за исключением того, что вместо этого я использую экспортер латексаHTML. Так почему же это не работает?