安装 nbconvert(转换jupyter notebook)

文章目录

  • 安装 nbconvert
    • 设置pip清华镜像源
    • Jupyter Notebook安装(Windows)
    • 安装 nbconvert
    • 安装 Pandoc
    • 安装 TeX
    • 安装Chromium
    • 用作命令行工具
      • 支持的输出格式
      • HTML
      • LaTeX
      • PDF格式
      • 网络PDF
      • Reveal.js HTML 幻灯片
        • 示例:创建带有演讲者备注的幻灯片
        • 使用 https 服务器提供幻灯片:`--post serve`
      • Markdown
      • ASCII
      • 重构文本
      • 可执行脚本
      • 笔记本和预处理器
    • 转换多个笔记本

安装 nbconvert

设置pip清华镜像源

升级 pip 到最新的版本 (>=10.0.0) 后进行配置:

python -m pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

Jupyter Notebook安装(Windows)

  1. 下载Jupyter Notebook
    (1)打开cmd(如果没有把Python安装目录添加到Path,就需要切换到Python安装目录的Scripts目录下,不过大多数的Python安装教程都会有这一步);

(2)输入pip install jupyter

  1. 启动Juypter Notebook
    (1)命令行窗口输入jupyter notebook

同时,默认浏览器会打开Jupyter Notebook窗口,说明Jupyter Notebook安装成功。

  1. 配置Jupyter Notebook
    (1)命令行窗口输入jupyter notebook --generate-config,会发现C:\Users\用户名\ .jupyter下多出了一个配置文件jupyter_notebook_config.py

(2)打开这个配置文件,找到下面这句#c.NotebookApp.notebook_dir = ''

可以把它修改成c.NotebookApp.notebook_dir = 'D:\jupyter-notebook',当然具体的目录由自己创建的文件夹决定(需要自己创建)。

配置文件修改完成后,以后在jupyter notebook中写的代码都会保存在该目录下。现在重新启动jupyter notebook,就进入了新的工作目录;

  1. 添加代码自动补全功能(可选)
    (1)打开cmd,输入pip install jupyter_contrib_nbextensions,等待安装成功;

(2)安装完之后需要配置nbextension(配置前要确保已关闭jupyter notebook),在cmd中输入jupyter contrib nbextension install --user --skip-running-check,等待配置成功;

(3)在前两步成功的情况下,启动jupyter notebook,会发现在选项栏中多出了Nbextension的选项,点开该选项,并勾选Hinterland,即可添加代码自动补全功能。

安装 nbconvert

Nbconvert 为 pip 打包,因此您可以使用以下命令安装它:

pip install nbconvert

重要提醒:

要解锁其全部功能,nbconvert 需要 Pandoc、TeX(特别是 XeLaTeX)和 Pyppeteer。这些必须单独安装。

安装 Pandoc

要将 markdown 转换为 HTML 以外的格式,nbconvert 使用 Pandoc(1.12.1 或更高版本)。

您可以从他们的网站获取 pandoc 。

安装 TeX

为了将笔记本转换为 PDF((with --to pdf),nbconvert 使用 LaTeX 和 XeTeX 作为渲染引擎。

5.0 版中的新功能:我们使用 XeTeX 作为渲染引擎,而不是 pdfTeX(与早期版本一样)。XeTeX 可以通过原生操作系统库来访问字体,它对 OpenType 格式的字体和 Unicode 字符有更好的支持。

手动安装完整的 TeX 环境(包括 XeLaTeX 和必要的支持包)可能很棘手。幸运的是,有一些软件包可以让这变得更容易。这些软件包特定于不同的操作系统:

  • 窗户:MikTex

因为 nbconvert 依赖于标准 TeX 发行版中包含的包和字体,如果您没有完整的安装,您可能无法使用 nbconvert 的标准工具将笔记本转换为 PDF。

安装Chromium

要将笔记本转换为 PDF (with --to webpdf),nbconvert 需要 Pyppeteer Chromium 自动化库。

Pyppeteer 使用特定版本的 Chromium。如果它没有找到合适的网络浏览器安装,如果将--allow-chromium-download 标志传递给命令行,它可以自动下载它。

要安装合适版本的 pyppeteer,您可以 pip install nbconvert[webpdf]

pip从 PyPI安装:

pip install pyppeteer

或者从这个 github repo安装最新版本:

pip install -U git+https://github.com/pyppeteer/pyppeteer@dev

用法

注意:当你第一次运行 pyppeteer 时,如果在你的系统上没有找到它,它会下载最新版本的 Chromium (~150MB)。如果您不喜欢这种行为,请确保安装了合适的 Chrome 二进制文件。一种方法是pyppeteer-install在使用这个库之前运行命令。

完整的文档可以在这里找到。Puppeteer 的文档及其故障排除指南也是 pyppeteer 用户的重要资源。

用作命令行工具

nbconvert运行脚本的命令行语法是:

$ jupyter nbconvert --to FORMAT notebook.ipynb

这会将 Jupyter 笔记本文件notebook.ipynb转换为字符串给出的输出格式FORMAT

支持的输出格式

当前支持的输出格式有:

  • HTML,

  • LaTeX,

  • PDF,

  • WebPDF,

  • Reveal.js HTML slideshow,

  • Markdown,

  • Ascii,

  • reStructuredText,

  • executable script,

  • notebook.

Jupyter 还提供了一些用于输出格式的模板。这些可以通过附加--template参数指定,并在下面的部分中列出。

HTML

  • --to html

    HTML 导出。

    • --template lab(默认)

      笔记本的完整静态 HTML 渲染。这看起来与 JupyterLab 交互式视图非常相似。

      实验室模板支持额外--theme选项,默认为light. 这个额外的选项不仅允许您使用 JupyterLab 提供的默认主题lightdark主题,还允许您使用自定义主题。例如:

      pip install jupyterlab-miami-nights然后。--theme jupyterlab_miami_nights

    • --template classic

      简化的 HTML,使用经典的 jupyter 外观。

    • --template basic

      基本 HTML,以最少的结构和样式呈现。

    • --embed-images

      如果提供了此选项,则将图像作为 base64 url​​ 嵌入到生成的 HTML 文件中。

LaTeX

--to latex

LaTeX出口。这会生成NOTEBOOK_NAME.tex文件,准备导出。图像在文件夹中输出为 .png 文件。

--template article(默认)

Latex 文章,源自 Sphinx 的 howto 模板。

--template report

Latex 报告,提供目录和章节。

笔记

nbconvert 使用pandoc在各种标记语言之间进行转换,因此 pandoc 在转换为 latex 或 reStructuredText 时是一个依赖项。

PDF格式

  • --to pdf

    通过 Latex 生成 PDF。支持与.--to latex

网络PDF

  • --to webpdf

    通过首先呈现为 HTML、呈现 HTML Chromium 无头并导出为 PDF 来生成 PDF。此导出器支持与.--to html

    webpdf 导出器需要pyppeteerChromium 自动化库,可以通过nbconvert[webpdf].

Reveal.js HTML 幻灯片

说明:

为了指定从笔记本单元到 Reveal.js 幻灯片的映射,请从 Jupyter 笔记本中选择菜单项 View –> Cell Toolbar –> Slideshow。这将在每个单元格的右上角显示一个下拉菜单。从中可以选择“幻灯片”、“子幻灯片”、“片段”、“跳过”和“注释”。转换时,指定为“跳过”的单元格将不包含在内,“注释”将仅包含在演示者注释中,等等。

  • --to slides

    这会生成一个 Reveal.js HTML 幻灯片。

运行此幻灯片需要一份reveal.js(4.x 版)的副本。

默认情况下,这将在 html 中包含一个脚本标记,该标记将直接从公共 CDN 加载reveal.js。

这意味着如果您将幻灯片包含在网页上,它们应该可以按预期工作。但是,某些功能(特别是演讲者备注和计时器)将无法在网站上使用,因为它们需要访问reveal.js 的本地副本。

演讲者笔记需要一份reveal.js 的本地副本。然后,您需要告诉 nbconvert如何找到该本地副本。

计时器仅在您已经有演讲者笔记时才起作用,而且还需要本地 https 服务器。您可以在ServePostProcessorExample中阅读有关此内容的更多信息。

为了更清楚地说明这一点,让我们看一个示例,说明如何使用本地的reveal.js 副本获取演讲者笔记:SlidesWithNotesExample。

示例:创建带有演讲者备注的幻灯片

假设您有一个your_talk.ipynb要转换为幻灯片的笔记本。对于此示例,我们假设您在与要转换的笔记本相同的目录中工作(即,当您运行时, 显示在文件列表中)。ls .``your_talk.ipynb

首先,我们需要一份与您的幻灯片在同一目录中的reveal.js 副本。一种方法是在终端中使用以下命令:

git clone https://github.com/hakimel/reveal.js.git
cd reveal.js
git checkout 3.5.0
cd …

然后我们需要告诉 nbconvert 指向这个本地副本。为此,我们使用--reveal-prefix命令行标志指向本地副本。

jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js

这将创建文件your_talk.slides.html,您应该可以使用. 要访问演讲者备注, 请在幻灯片加载后按,它们应该会在新窗口中打开。open your_talk.slides.html``s

注意:这不会启用完全脱机运行的幻灯片。虽然您有一个reveal.js 的本地副本,但默认情况下,幻灯片需要通过公共CDN 访问mathjax、require 和jquery。解决这个用例是一个悬而未决的问题,并且总是鼓励PR 。

使用 https 服务器提供幻灯片:--post serve

一旦你的演讲者笔记工作了,你可能会注意到你的计时器不起作用。计时器需要更多的基础设施;您需要从本地 https 服务器提供您本地的reveal.js 副本。

幸运nbconvert的是,通过使用ServePostProcessor. 为了激活这个服务器,我们将命令行标志附加到我们对 nbconvert 的调用中。--post serve

jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js --post serve

这将运行服务器,它将占用您运行命令的终端,直到您停止它。您可以通过按 两次来停止服务器。ctrl C

Markdown

  • --to markdown

    简单的Markdown输出。Markdown 单元格不受影响,代码单元格缩进 4 个空格。图像在文件夹中输出为 .png 文件。

ASCII

  • --to asciidoc

    ASCII 输出。图像在文件夹中输出为 .png 文件。

重构文本

  • --to rst

    基本的 reStructuredText 输出。作为在 Sphinx 文档中嵌入笔记本的起点很有用。图像在文件夹中输出为 .png 文件。

    说明:nbconvert 使用pandoc在各种标记语言之间进行转换,因此 pandoc 在转换为 LaTeX 或 reStructuredText 时是一个依赖项。

可执行脚本

  • --to script

    将笔记本转换为可执行脚本。这是从笔记本中获取 Python(或其他语言,取决于内核)脚本的最简单方法。如果 Jupyter notebook 中有任何魔法,那么这可能只能从 Jupyter 会话中执行。

    例如,要将 Julia 笔记本转换为 Julia 可执行脚本:

    jupyter nbconvert --to script my_julia_notebook.ipynb

笔记本和预处理器

  • --to notebook

    3.0 版中的新功能。

    这不会将笔记本本身转换为不同的格式,而是允许在笔记本上运行 nbconvert 预处理器,或者转换为其他笔记本格式。例如:

    jupyter nbconvert --to notebook --execute mynotebook.ipynb

这将打开笔记本,执行它,捕获新的输出,并将结果保存在mynotebook.nbconvert.ipynb. 指定--inplace将覆盖输入文件而不是写入新文件。默认情况下, nbconvert如果在执行单元格期间发生任何异常,将中止转换。如果您指定--allow-errors(除了 --execute标志之外),则转换将继续,并且任何异常的输出都将包含在单元格输出中。

以下命令:jupyter nbconvert --to notebook --nbformat 3 mynotebook

将以版本 3格式创建mynotebook.ipynbin的副本mynotebook.v3.ipynb

如果要就地转换笔记本,可以将输出文件指定为与输入文件相同:

jupyter nbconvert --to notebook mynb --output mynb

请注意这一点,因为它将替换输入文件。

说明:nbconvert 使用pandoc在各种标记语言之间进行转换,因此 pandoc 在转换为 latex 或 reStructuredText 时是一个依赖项。

创建的输出文件nbconvert将与笔记本具有相同的基本名称,并将放置在当前工作目录中。任何支持文件(图形等)都将放置在与笔记本具有相同基本名称的新目录中,后缀为_files

$ jupyter nbconvert notebook.ipynb 
$ ls
notebook.ipynb notebook.html notebook_files/

对于简单的单文件输出,比如html、markdown等,可以将输出发送到标准输出:

$ jupyter nbconvert --to markdown notebook.ipynb --stdout

转换多个笔记本

可以从命令行指定多个笔记本:

$ jupyter nbconvert notebook*.ipynb 
$ jupyter nbconvert notebook1.ipynb notebook2.ipynb

或通过配置文件中的列表,例如mycfg.py,包含以下文本:

c = get_config()
c.NbConvertApp.notebooks = ["notebook1.ipynb", "notebook2.ipynb"]

并使用命令:

$ jupyter nbconvert --config mycfg.py

以前的下一个

你可能感兴趣的:(软件技巧,jupyter,python,pycharm)