将Jupyter笔记本导出为HTML时隐藏代码

时间:2018-04-18 19:18:08

标签: python jupyter

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

由于

9 个答案:

答案 0 :(得分:5)

到目前为止(nbconvert版本5.6.0),最简单的解决方案似乎是在使用nbconvert的CLI界面时提供参数--no-input

jupyter nbconvert yourNotebook.ipynb --no-input

它像魔术一样工作 更多信息here

答案 1 :(得分:4)

准备好jupyter笔记本 转到Anaconda Prompt-> jupyter笔记本的位置,然后输入以下命令

jupyter nbconvert yourNotebook.ipynb --no-input --no-prompt

这会将Jupyter笔记本转换为html,并且所有单元格都向右对齐。

答案 2 :(得分:4)

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

jupyter nbconvert YourNotebook.ipynb --no-input --to html

答案 3 :(得分:2)

您可以使用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 %}

然后使用以下方法将笔记本转换为HTML:

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

我使用nbinteract(https://www.nbinteract.com/)发布页面,并在单元格顶部发布了#HIDDEN(https://gitter.im/nbinteract/Lobby/)。它没有记录,并且有可能更改,但是为了向后兼容,他们会保留它。.

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

对于其他可能希望隐藏特定代码单元的用户,一种解决方案是使用nbdev包(由fastai开发)中的命令行工具将Jupyter笔记本导出到Markdown。该命令为nbdev_nb2md

执行此操作时,如果将#hide放在任何笔记本单元格的顶部,则不会导出到markdown。它将被忽略。

有关详细信息,请参见此博客文章:https://www.fast.ai/2020/01/20/nb2md/

答案 8 :(得分:0)

对于我的用例,我希望能够在没有笔记本内输出的情况下创建导出,并且尽可能少地手动工作。我设法粘合在一起的适当解决方案如下:

在第一个单元格中执行一些 javascript 以获取当前笔记本的名称。该名称将存储在 nb_name 变量中,该变量可在当前 python 运行时范围内访问。

单元格 1:

%%javascript
IPython.notebook.kernel.execute('nb_name = "' + IPython.notebook.notebook_name + '"')

在单元格 2 中,将获得的名称传递给 shell 调用并使用 --no-input 存储一个 html。这 ”!”在 jupyter notebook 中表示 shell 调用,“&”用于将变量从当前 python 运行时范围传递到 shell 调用。

单元格 2:

print(nb_name)
!jupyter nbconvert --output-dir='./docs' --no-input --to html $nb_name