我喜欢我的 github 存储库包含 py 文件而不是 ipynb 文件,但我更喜欢在做项目时在 Jupyter 中工作。
理想情况下,我希望通过以下方式处理我的项目:
有没有办法在不手动将我的笔记本下载到 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/