将Jupyter Notebook导出为HTML时隐藏代码

Ahm*_*imi 12 python jupyter

我正在寻找一种将.iipynb文件导出到HTML时隐藏代码单元格(输入)的方法。我根本不希望这些代码单元可见(不希望有一些按钮可以将其关闭/打开)。输出是针对不知道编程语言是什么的人的。我尝试了很多在互联网上找到的东西,但似乎无济于事。

谢谢

vin*_*ega 60

截至目前(nbconvert 5.6.0 版),最简单的解决方案似乎是--no-input在使用 nbconvert 的 CLI 接口时提供参数:

jupyter nbconvert yourNotebook.ipynb --no-input

它的工作原理就像魔法更多信息在这里

  • 还可以使用“--no-prompt”隐藏提示并使所有单元格均匀垂直对齐 (13认同)
  • 这会杀死所有单元格的所有输入代码。如果您只想杀死某些单元格而不是全部单元格的输入代码怎么办?我怀疑一定有一个单元格元数据可以解决这个问题,但我就是想不出来。 (3认同)
  • 更改了语法,它对我有用 `jupyter nbconvert --no-input yourNotebook.ipynb` (2认同)

ppl*_*ski 23

我写了一篇关于如何在 Jupyter Notebook 中隐藏代码的不同方法的文章。根据我的发现,有几种方法可以做到这一点。

1.隐藏所有代码nbconvert

导出笔记本时nbconvert需要--no-input在命令中添加:

jupyter nbconvert --to html --no-input your-notebook.ipynb
Run Code Online (Sandbox Code Playgroud)

2.隐藏选定的单元格

您可以通过添加标签来隐藏选定的单元格hide_code,如下面的动画所示:

仅隐藏选定单元格的代码的命令:

jupyter nbconvert --to html --TagRemovePreprocessor.remove_cell_tags='{"hide_code"}' my-notebook.ipynb
Run Code Online (Sandbox Code Playgroud)

3. 使用 Mercury 导出为 HTML

Mercury是一个用于与非技术用户共享笔记本的开源软件。它可以隐藏代码。它还可以为笔记本生成与代码中的变量连接的小部件。笔记本导出过程由 YAML 标头控制,下面是隐藏代码的示例 YAML:

jupyter nbconvert --to html --no-input your-notebook.ipynb
Run Code Online (Sandbox Code Playgroud)

带有 YAML 标头的示例笔记本: 带有 YAML 标头的示例笔记本

为笔记本生成的 HTML(网站)Mercury


Aut*_*umn 7

您可以使用NBConvert模板执行此操作。那里的大多数示例都是针对Latex / PDF的,并且不适用于HTML,HTML使用了不同的模板集(由于某种原因,使用了不同的扩展名和略有不同的文件语法)。

将以下内容写入名为的模板文件hidecode.tpl

{%- extends 'full.tpl' -%}

{% block input_group %}
    {%- if cell.metadata.get('nbconvert', {}).get('show_code', False) -%}
        ((( super() )))
    {%- endif -%}
{% endblock input_group %}
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令将笔记本转换为HTML:

jupyter nbconvert --to html --template hidecode YourNotebook.ipynb


Nav*_*mar 7

准备好您的 jupyter notbook 转到 Anaconda Prompt -> jupyter notebook 的位置并输入以下命令

jupyter nbconvert yourNotebook.ipynb --no-input --no-prompt
Run Code Online (Sandbox Code Playgroud)

这会将 Jupyter notebook 转换为 html,所有单元格都向右对齐。


Mar*_*uts 6

在最新版本中,jupyter nbconvert您可以使用以下--no-input选项:

echo 'A Markdown cell with an equation $x=y+1$

```python
1 + 1
```
' | jupytext --to ipynb | jupyter nbconvert --stdin --execute --no-input --to html --output notebook.html
Run Code Online (Sandbox Code Playgroud)

现在,如果您没有该--no-input选项,请使用--TemplateExporter.exclude_input=True,从版本5.2.1开始可用。

  • 谢谢!有用。突出显示您的答案的核心:`jupyter nbconvert --no-input --to html notebook.ipynb`。 (3认同)

小智 5

补充@vincentVega的回答,需要加上--to语句,否则会抛出如下错误:ValueError: Please specify an output format with '--to <format>'.

jupyter nbconvert YourNotebook.ipynb --no-input --to html
Run Code Online (Sandbox Code Playgroud)


Ahm*_*imi 3

我终于发现: https: //pypi.org/project/hide_code/0.2.0/

它是一个 jupyter 扩展,并且工作起来就像一个魅力。我使用命令提示符将笔记本转换为 html,因为扩展附带的按钮对我不起作用。