Prhub

#37766 [CI/Build] Resolve a dependency deadlock when installing the test dependencies used in CI

原始 PR 作者 yurun00 合并时间 2026-04-01 02:05 文件变更 2 提交数 3 评论 5 代码增减 +28 / -7

执行摘要

修复 CI 测试依赖安装时的依赖死锁

根据 PR body,uv pip install -r requirements/common.txt -r requirements/dev.txt --torch-backend=auto 命令在本地环境(如 WSL)中因 protobufopentelemetry-proto 的版本不匹配导致无法解析依赖。作者在 Issue 评论中指出,官方贡献指南建议使用该命令,而 CI 可能因增量安装避开了全局解析。

值得精读:展示了如何处理 Python 依赖死锁的最佳实践,包括识别自动生成文件的陷阱并修改上游生成命令而非手动编辑。对于参与构建/CI 的工程师有参考价值。

讨论亮点

AI 审核机器人 (gemini-code-assist) 指出根因:文件是自动生成的,手动编辑不可持续,应更新生成命令以包含约束文件 common.txt。作者随后采纳建议,更新了 .pre-commit-config.yaml 并重新生成文件。审核者 hmellor 认可后批准了 PR。

实现拆解

  1. 更新预提交钩子生成命令.pre-commit-config.yaml):在 pip-compile 命令中增加 -c requirements/common.txt 约束,确保生成 requirements/test.txt 时考虑公共依赖版本限制。
  2. 降级 opentelemetry-protorequirements/test.txt):从 1.36.0 降至 1.35.0,与已固定的 opentelemetry-sdk==1.35.0 兼容。
  3. 升级 protobufrequirements/test.txt):从 6.33.2 升至 6.33.6,解决与其他依赖的冲突。
  4. 更新注释与元数据:在 requirements/test.txt 中添加 -c requirements/common.txt 注释标记,并调整相关依赖注释。
文件 模块 状态 重要度
requirements/test.txt 依赖管理 modified 3.54
.pre-commit-config.yaml 预提交配置 modified 3.07

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

手动编辑自动生成文件的可持续性 设计

gemini-code-assist[bot] 指出直接修改 requirements/test.txt 不可持续,因为文件是自动生成的,建议更新生成命令以包含约束文件。

结论:作者采纳建议,更新了 .pre-commit-config.yaml 中的生成命令并重新生成文件。 · 已解决

风险与影响

变更仅涉及依赖版本调整和生成命令修正,不涉及核心代码逻辑。风险极低,但需注意:若未来 opentelemetry-protoprotobuf 版本更新,需再次验证兼容性。

范围仅限于 CI 环境(CUDA)的测试依赖安装过程。影响中等:解决了新贡献者本地环境无法复现 CI 安装的问题,提升了开发体验。对生产环境无影响。

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论