有什么方法可以生成两个版本的 IPython 笔记本之间的差异吗?

问题描述 投票:0回答:8

我已经开始大量使用 IPython 笔记本 来为我的论文撰写草稿部分。然而,给定草稿的两个版本(即笔记本),我希望能够生成某种形式的差异输出以显示发生了什么变化。有谁知道这目前是否可行,无论是通过 IPython 笔记本本身还是通过某些扩展?

diff ipython jupyter-notebook
8个回答
18
投票

笔记本差异可以使用 nbdime 生成。安装 nbdime 后,您可以运行以下命令在浏览器中查看笔记本差异:

> nbdiff-web notebook_1.ipynb notebook_2.ipynb

如果您使用 Github 进行版本控制,则可以使用 ReviewNB 进行 Notebook 差异。它允许您通过 Github 登录并浏览存储库上的提交/拉请求差异。您会看到如下所示的视觉差异:


9
投票

尝试以下步骤:

  1. 通过在终端上输入
    nbdime
    来安装
    pip install nbdime
  2. 通过在终端上输入
    nbdime config-git --enable --global
    与 Git 集成。
  3. 在终端上输入
    nbdiff-web path/to/notebook.ipynb

您可以选择忽略某些类型的细胞。例如,如果您想忽略输出单元格,请键入:

nbdiff-web --ignore-outputs  path/to/notebook.ipynb

有关不同 diff 选项的更多信息: https://nbdime.readthedocs.io/en/latest/cli.html#common-diff-options


6
投票

1- VS Code 已添加到 2020 年 8 月版本 看这里

2-尝试nbdime


4
投票

来自 git issues 的另一个实用程序似乎已获得官方关注,它是 nbdime


3
投票

自从这个问题得到解答后,NBdiff,一个用于 IPython Notebook 的差异和合并工具出现在 GitHub 上。不幸的是,它尚未针对 Jupyter / IPython 3 Notebook 格式进行更新。


2
投票

很多人都插话了,但没有人真正花时间写任何东西,即使笔记本是非常“简单”的 json 文件,其中单元格“只”需要“对齐”,然后生成一个 diffed-json 笔记本。


1
投票
Curvenote

提供了一个chrome扩展,允许您将笔记本置于版本控制中,然后您可以比较各个单元格nbdime样式,还可以查看以前生成的输出(绘图、表格、流...)您的代码的不同版本。


0
投票
nbdiff

实用程序使这变得非常简单和有效。简单地发出:

nbdiff -DOMI HEAD~ HEAD my_notebook.ipynb

参数在这里

nbdiff [base] [remote] [paths ...]

并且我选择在这里将当前的 
HEAD

与前一个

HEAD~
进行比较(您也可以使用特定的提交哈希或简写,例如
HEAD~~
请注意,我使用 

nbdiff -DOMI

来查看代码中当前的更改。您可以使用其他组合 - 也可以使用基于网络的

nbdiff-web HEAD~ HEAD my_notebook.ipynb

这将呈现清晰的输出,例如

© www.soinside.com 2019 - 2024. All rights reserved.