You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git忽略ipynb时pre-commit的jupytext钩子无法同步生成py文件问题

问题核心原因

你当前的钩子无法正常工作主要来自两个配置冲突:

  • pre-commit默认仅对Git暂存/已跟踪的文件运行钩子,你将*.ipynb加入了.gitignore,Git不会识别、暂存这类文件,钩子的files规则匹配不到有效触发文件,自然不会执行同步逻辑
  • 原有jupytext参数仅支持对已存在配对关系的文件执行同步,没有预先配置配对规则的前提下,无法从单独的ipynb生成对应的py文件

具体调整方案

1. 修正pre-commit钩子配置

给本地jupytext钩子增加强制运行参数,取消对Git暂存文件的依赖,调整后的完整配置如下:

-   repo: local
    hooks:
    -   id: jupytext
        name: jupytext
        entry: jupytext
        language: conda
        files: '^notebooks/(.*\.py|.*\.ipynb)$'
        args: [--sync, --pipe, black, --set-formats, 'ipynb,py']
        pass_filenames: false
        always_run: true

新增参数说明:

  • always_run: true:每次提交强制触发该钩子,不需要匹配到暂存的符合规则的文件
  • pass_filenames: false:不向jupytext传递Git暂存的文件列表,避免因为没有暂存ipynb导致执行失败
  • --set-formats ipynb,py:自动给处理的notebook配置同目录下ipynb和py文件的配对规则,不需要手动提前设置

2. 修正.gitignore规则

确保同步生成的py文件可以被Git跟踪,在你的.gitignore中补充以下规则:

!notebooks/**/*.py

这个规则会取消对notebooks目录下所有py文件的忽略,保证同步生成的脚本可以正常提交。

3. 可选:添加全局jupytext配置(更稳定)

如果项目内notebook比较多,可以在项目根目录新建.jupytext.toml配置文件,统一配置配对规则,不需要在钩子参数里重复指定:

[formats]
"notebooks/" = "ipynb,py"

配置后可以把钩子args里的--set-formats, 'ipynb,py'删掉即可。

验证方式

配置调整完成后,先执行一次pre-commit run --all-files手动触发钩子,检查对应ipynb同级目录是否生成了同名的py文件,确认无误后再正常提交即可。

内容的提问来源于stack exchange,提问作者Farhood ET

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:06:03