git - 有没有办法在无缝提交 py 文件而不是 ipynb 时一起使用 Git 和 Jupyter 笔记本?

标签 git github jupyter-notebook

我喜欢我的 github 存储库包含 py 文件而不是 ipynb 文件,但我更喜欢在做项目时在 Jupyter 中工作。
理想情况下,我希望通过以下方式处理我的项目:

  • 从我正在处理的存储库中执行 git pull,其中包含一个 .py 文件,我已从我的 Jupyter 笔记本
  • 转换为 .py 文件
  • 在提交前使用更改更新 Jupyter 笔记本
  • 将笔记本下载为 py 文件,然后提交,笔记本文件被 git
  • 忽略

    有没有办法在不手动将我的笔记本下载到 py 文件中、将我下载到我的下载文件夹中的 py 文件、将其拖到我的工作目录中并手动替换现有的 py 文件的情况下执行此“更新 py 文件”终于做出 promise 了?只是看起来很不干净。
    也许我也应该在存储库中拥有我的 ipynb,这样我就可以确保当我 pull 出笔记本时,它是最新的并且与 py 文件完全相同?但我希望它对公众 stash 。
    我只是希望能够使事情像只使用 py 文件一样无缝,同时在 Jupyter 中进行实际工作,然后为公众提供最终代码是 py 文件,但我希望相对流畅地完成它,而无需大量手动操作拖放文件并替换旧文件。有点破坏了使用 git 的意义,因为我不再“优雅地”使用版本控制。

    最佳答案

    是的。 jupytext可以保留.ipynb.py只要您在受支持的客户端之一(例如 Jupyter Notebook 或 JupyterLab)中编辑这些文件,就可以通过所谓的“paired notebooks”为您同步文件。
    或者,您可以配置预提交 git Hook 以从 .ipynb 运行 jupytext 转换至.py就在每次提交之前,记录在 here .简而言之,您需要安装 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 转换功能配置预提交 Hook ,但这将提供更少的配置选项

    关于git - 有没有办法在无缝提交 py 文件而不是 ipynb 时一起使用 Git 和 Jupyter 笔记本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67446912/

    相关文章:

    git - 如何将 zscaler 证书导入 Git

    Git:如何撤消本地提交和添加文件?

    git - 如何防止 Gitlab 在分支 merge 时创建额外的 merge 提交

    github - 为什么当我在 GitHub 的 GraphQL API 中调用同一字段两次(使用不同的查询)时能够绕过分页

    ios - Xcode/Git 存储库设置问题

    github - 使用 2FA 为 Github CI 配置 Jenkins

    python - 使用装饰器来持久化 python 对象

    ipython - 以非交互方式运行 IPython/Jupyter 笔记本

    git - 在本地跟踪文件,但绝不允许将它们推送到远程存储库

    python - jupyter notebook --NotebookApp.iopub_data_rate_limit=10000000 不工作