如何用uv-pre-commit将依赖分别导出到requirements.txt和requirements-dev.txt
用uv-pre-commit从pyproject.toml分离导出依赖
不需要依赖.in文件,直接通过uv-export的命令参数指定依赖组,就能将常规依赖和开发依赖分离导出到不同文件。具体配置步骤如下:
1. 更新uv-pre-commit版本
确保使用支持依赖组导出的版本(至少0.7.3),旧版本可能不支持相关参数。
2. 配置.pre-commit-config.yaml
替换原有钩子配置,添加两个uv-export实例,分别处理常规依赖和开发依赖:
repos: - repo: https://github.com/astral-sh/uv-pre-commit rev: 0.7.3 hooks: # 导出仅常规依赖到requirements.txt - id: uv-export name: uv-export requirements.txt args: [--requirements, --output, requirements.txt, --only=dependencies] files: ^pyproject\.toml$ # 导出常规依赖+开发依赖到requirements-dev.txt - id: uv-export name: uv-export requirements-dev.txt args: [--requirements, --output, requirements-dev.txt, --include-group, dev] files: ^pyproject\.toml$ # 自动更新锁文件 - id: uv-lock
参数说明:
--only=dependencies:仅导出pyproject.toml中[project]下的常规依赖--include-group dev:导出常规依赖 +[dependency-groups]下的dev组依赖;如果需要纯开发依赖,替换为--only-group devfiles: ^pyproject\.toml$:仅在pyproject.toml变更时触发钩子,避免无效执行
3. 验证效果
运行以下命令触发所有钩子,生成分离的依赖文件:
pre-commit run --all-files
执行后会得到:
requirements.txt:仅包含项目核心依赖requirements-dev.txt:包含核心依赖+开发依赖(或纯开发依赖,取决于你选择的参数)
内容的提问来源于stack exchange,提问作者Ghasem
相关产品推荐
相关产品推荐

