在PyCharm下使用nbdime用于Jupyter笔记本

时间:2017-10-26 23:12:31

标签: git pycharm jupyter

我使用nbdime来区分和合并Jupyter笔记本电脑,除了对大型笔记本电脑来说有点慢,我喜欢它。但是,当我尝试从PyCharm中进行版本控制时,我的git设置似乎被忽略了,它会对.ipynb文件进行文本差异。

我的.gitconfig有以下内容,我相信在安装nbdime时已设置:

[diff "jupyternotebook"]
        command = git-nbdiffdriver diff
[merge "jupyternotebook"]
        driver = git-nbmergedriver merge %O %A %B %L %P
        name = jupyter notebook merge driver
[difftool "nbdime"]
        cmd = git-nbdifftool diff \"$LOCAL\" \"$REMOTE\"
[difftool]
        prompt = false
[mergetool "nbdime"]
        cmd = git-nbmergetool merge \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
[mergetool]
        prompt = false

从命令行,这很好用。 (好吧,我从来没有做过合并,但差异很大。)

另外,我发现你可以在PyCharm中指定一个外部差异工具,但这似乎是一个全局设置。

有没有人让这个工作?

2 个答案:

答案 0 :(得分:2)

矿山工程。我希望它更好地集成到JetBrains diff工具中。相反,它只是将差异弹出到浏览器窗口。

  1. 首先找出为您安装nbdime的位置。在Mac / Linux上: which git-nbdifftool
  2. 导航至偏好设置 - >工具 - >差异与合并 - >外部差异工具
  3. 确保"使用外部差异工具:"已检查
  4. 可执行文件的路径:步骤1中的完全限定路径
    • 我是/Users/dork/miniconda/bin/git-nbdifftool
  5. 参数:diff %1 %2
  6. 点击“应用”
  7. 使用它:

    1. 打开笔记本的差异
    2. 点击顶部的图标倒数第二个按钮(?之前)。看起来像锤子和扳手。

答案 1 :(得分:1)

@debugme的答案对我不起作用(在Windows下,使用Anaconda Python + PyCharm 2018.2 )。有三个问题:

  • nbdime需要Python,但在Anaconda下,只有在激活相关的conda环境时,Python解释器才能全局使用(即在PATH中)。
  • 不确定是PyCharm还是nbdime发生了变化-但我的PyCharm进行差异时仅传递两个参数,git-nbdifftool期望为3。
  • 答案说明了如何为差异设置nbdime,但我也希望它用于合并。

所以,这对我有用:

  1. 使用以下命令创建批处理文件pycharm_nb_diff.bat

    call %USERPROFILE%\AppData\Local\Continuum\anaconda3\Scripts\activate.bat
    nbdiff-web %*
    exit /b %errorlevel%
    
    • 请注意,我使用的是nbdiff-web而不是git-nbdifftool
    • 调用activate.bat在conda env中运行该工具(我使用的位置是Windows下的默认位置)。
    • BTW,conda 4.6.0重新引入了conda-run,它比activate.bat更为可取,但目前仅在Linux下受支持。
  2. 现在将PyCharm设置为将pycharm_nb_diff.bat与参数%1 %2一起使用。

  3. 以相同的方式,用pycharm_nb_merge.bat而不是nbmerge-web创建nbdiff-web,并将PyCharm设置为合并工具。请注意,合并所需的参数不同:--out %4 %3 %1 %2
    • 由于脚本中的exit /b %errorlevel%行,您可以选中PyCharm中的信任进程退出代码框,并按预期方式合并工作。