git - 有没有办法在无缝提交 py 文件而不是 ipynb 的同时同时使用 Git 和 Jupyter 笔记本?
问题描述
我喜欢我的 github 存储库包含 py 文件而不是 ipynb 文件,但我更喜欢在做项目时在 Jupyter 中工作。
理想情况下,我希望通过以下方式处理我的项目:
- 从我正在处理的存储库中执行 git pull,其中包含一个 .py 文件,我已从我的 Jupyter 笔记本转换为 .py 文件
- 在提交之前使用更改更新 Jupyter 笔记本
- 将 notebook 下载为 py 文件,然后提交,git 忽略 notebook 文件
有没有办法在不手动将我的笔记本下载到 py 文件中、将我下载到我的下载文件夹中的 py 文件、将其拖到我的工作目录中并手动替换现有的 py 文件的情况下执行此“更新 py 文件”终于做出承诺了?只是看起来很不干净。
也许我也应该在存储库中拥有我的 ipynb,这样我就可以确保当我拉出笔记本时,它是最新的并且与 py 文件完全相同?但我希望它对公众隐藏。
我只是希望能够使事情像只使用 py 文件一样无缝,同时在 Jupyter 中进行实际工作,然后为公众提供最终代码是 py 文件,但我希望相对流畅地完成它,而无需大量手动操作拖放文件并替换旧文件。有点破坏了使用 git 的意义,因为我不再“优雅地”使用版本控制。
解决方案
是的。只要您在受支持的客户端之一(例如 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 转换功能配置预提交挂钩,但这将提供更少的配置选项
推荐阅读
- gtk - 使用 vala 编程语言,你能检测到其他应用程序何时全屏或最大化,并暂停自己的程序吗?
- css - 为什么这个 CSS 选择器没有返回任何结果?
- mysql - 为什么查询集合名称,在新 pod 启动后变慢
- swift - Streamchat.io:访问用户的团队
- java - 为什么 Apache Tika 将 jar 文件的 mimetype 检测为 application/zip 而不是 application/java-archive?
- typescript - 如何将输入类型对象从 Pact(打字稿)传递到 GraphQL 突变
- tensorflow - 当我将填充设置为 1 时,ZeroPadding2D 填充两次
- php - Laravel 关联其他表
- sql - 在创建主键和非主键的哈希值后比较两个 Hive 表,并列出具有更新、插入和删除的唯一 id
- javascript - 在反应中动态加载父母和孩子