首页 > 解决方案 > 有没有办法在无缝提交 py 文件而不是 ipynb 的同时同时使用 Git 和 Jupyter 笔记本?

问题描述

我喜欢我的 github 存储库包含 py 文件而不是 ipynb 文件,但我更喜欢在做项目时在 Jupyter 中工作。

理想情况下,我希望通过以下方式处理我的项目:

有没有办法在不手动将我的笔记本下载到 py 文件中、将我下载到我的下载文件夹中的 py 文件、将其拖到我的工作目录中并手动替换现有的 py 文件的情况下执行此“更新 py 文件”终于做出承诺了?只是看起来很不干净。

也许我也应该在存储库中拥有我的 ipynb,这样我就可以确保当我拉出笔记本时,它是最新的并且与 py 文件完全相同?但我希望它对公众隐藏。

我只是希望能够使事情像只使用 py 文件一样无缝,同时在 Jupyter 中进行实际工作,然后为公众提供最终代码是 py 文件,但我希望相对流畅地完成它,而无需大量手动操作拖放文件并替换旧文件。有点破坏了使用 git 的意义,因为我不再“优雅地”使用版本控制。

标签: gitgithubjupyter-notebook

解决方案


是的。只要您在受支持的客户端之一(例如 Jupyter Notebook 或 JupyterLab)中编辑它们,jupytext就可以通过所谓的“配对笔记本”为您保持.ipynb和文件同步。.py

.ipynb或者,您可以配置 pre-commit git hook 以在每次提交.py之前运行 jupytext 转换,这在此处记录。简而言之,您需要安装pre-commit - 例如:

pip install pre-commit

然后创建/修改.pre-commit-config.yaml

repos:
-   repo: https://github.com/mwouts/jupytext
    rev: v1.11.2  # (replace with the latest stable version)
    hooks:
    - id: jupytext
      args: [--from, ipynb, --to, "py"]

如果您不想依赖 jupytext,也可以使用内置的 jupyter 转换功能配置预提交挂钩,但这将提供更少的配置选项


推荐阅读