关于python 3.x:如何从没有额外注释的Jupyter笔记本下载

How to Download from Jupyter Notebook without Extra Comments

如果已经被问过,或者解决方案是否简单,那就道歉。

使用Jupyter Notebook进行Python脚本编写。当我将笔记本下载为.py文件(通过单击File-> Download as-> Python(.py))时,Jupyter会添加一堆无关的注释行。它添加了一些解释器shebang,编码声明在开头,然后#In[], #Out[]为每个单元格等。为了使事情更麻烦,shebang看起来像

1
#!/usr/bin/env python

即使我使用的是python3内核。

虽然我确信它有最好的意图,但我经常想要拥有自己的解释器指令并完全跳过其他注释行,因为它们除了增加杂乱之外什么都不做。

如何只下载原始代码,只有我插入的注释,单元格除了换行符之外什么都没有?另外,我想知道一个永久性的解决方案来更改配置以便以这种方式下载它,对于我机器上的所有ipynb文件,而不是一次性命令。


您可以使用此命令:

1
2
3
4
jupyter nbconvert --to python"path/to/notebook.ipynb" \
--TemplateExporter.exclude_markdown=True \
--TemplateExporter.exclude_output_prompt=True \
--TemplateExporter.exclude_input_prompt=True

它将生成一个仅包含Python代码且不包含#In[], #Out[]的Python文件

命令中的\只是在多行上写入命令,可以删除。

永久配置

要使此配置永久化:

  • 在目录~/.jupyter/中创建名为jupyter_nbconvert_config.py的文件。如果不存在,则创建目录。

  • 写在文件里面:

    1
    2
    3
    4
    from nbconvert import TemplateExporter
    TemplateExporter.exclude_markdown=True
    TemplateExporter.exclude_output_prompt=True
    TemplateExporter.exclude_input_prompt=True
  • 现在您可以运行命令:

    1
    jupyter nbconvert --to python"path/to/notebook.ipynb"

    获取仅包含代码的Python文件。

  • 资料来源:
    1 2


    延迟响应,但您可以直接更改python.tpl文件,该文件引用Jupyter Notebook在创建python文件时使用的模板。

  • 找到您的python.tpl文件。我的位于:C:\Anaconda3\envs\\Lib\site-packages
    bconvert\templates
    ,其中只是我创建的环境的名称。我只是在'nbconvert\templates'上进行了Windows搜索以找到目录。
  • 通过在某处复制并粘贴原始python.tpl文件来备份它。我刚刚在上面的同一目录中创建了一个original_templates文件夹。
  • 使用对模板的所需更改编辑python.tpl文件(不是您为备份复制的文件)。
    如果你只想要没有标题/注释的代码块,下面是我使用的基本结构:
  • 1
    2
    3
    4
    {%- extends 'null.tpl' -%}
    {% block input %}
    {{ cell.source | ipython2python }}
    {% endblock input %}
  • 保存更改。
  • 现在,在此环境中作为python文件的所有未来下载应该只是没有额外注释的代码。

    有关自定义模板的更多详细信息,请参阅nbconvert文档:https://nbconvert.readthedocs.io/en/latest/customizing.html

    注意:我在环境中编辑了模板文件,因此如果我在anaconda中切换环境,我还需要对其他环境中的模板文件进行相同的更改。