# PR #37766 完整报告

- 仓库：`vllm-project/vllm`
- 标题：[CI/Build] Resolve a dependency deadlock when installing the test dependencies used in CI
- 合并时间：2026-04-01 02:05
- 原文链接：http://prhub.com.cn/vllm-project/vllm/pull/37766

---

## 执行摘要

本 PR 修复了 CI 中 CUDA 测试依赖安装时的 `protobuf` 与 `opentelemetry-proto` 版本死锁问题。通过降级 `opentelemetry-proto` 至 1.35.0、升级 `protobuf` 至 6.33.6，并修改预提交钩子生成命令加入 `common.txt` 约束，解决了依赖解析失败。这是一个低风险的构建基础设施修复，提升了新贡献者的本地开发体验。

## 功能与动机

根据 PR body 和 Issue 评论，`uv pip install -r requirements/common.txt -r requirements/dev.txt --torch-backend=auto` 命令在本地 WSL 环境中因依赖死锁失败。该命令是官方贡献指南推荐的测试环境搭建步骤。CI 可能因增量安装未触发全局解析而逃过此问题，但新贡献者在本地首次安装时会遇到障碍。

## 实现拆解

1. **更新预提交钩子生成命令 **（`.pre-commit-config.yaml`）：在 pip-compile 命令中增加 `-c requirements/common.txt` 约束，确保生成的 `requirements/test.txt` 自动考虑公共依赖的版本限制。这是根本解决方案，避免了手动编辑自动生成文件。

2. **降级 opentelemetry-proto**（`requirements/test.txt`）：从 1.36.0 降至 1.35.0，与 `opentelemetry-sdk==1.35.0` 对齐，消除版本冲突。

3. **升级 protobuf**（`requirements/test.txt`）：从 6.33.2 升至 6.33.6，解决与其他依赖（如 `opentelemetry-esporter-otlp-proto-grpc`）的兼容性问题。

4. **更新注释与元数据**：在 `requirements/test.txt` 中添加 `-c requirements/common.txt` 注释标记，并调整相关依赖的 via 注释，保持文件元信息的准确性。

## 评论区精华

> **gemini-code-assist[bot] ( 高优先级评论 )**：虽然版本更改正确，但 `requirements/test.txt` 是自动生成文件，手动编辑不可持续，会被覆盖。建议更新生成命令以包含约束文件。
>
> **yurun00 ( 作者 )**：已采纳建议，更新了 `.pre-commit-config.yaml` 并重新生成文件。

审核者 `hmellor` 对作者的说明表示认可，并批准了 PR。

## 风险与影响

- **风险**：极低。变更仅涉及依赖版本和生成命令，不触及核心代码。未来若更新依赖，可能需再次验证兼容性。
- **影响**：范围限定在 CI 构建环境（CUDA）。修复了新贡献者本地安装测试依赖的阻塞问题，提升开发体验。对生产部署无影响。

## 关联脉络

本 PR 未关联其他 Issue 或 PR，属于独立的构建基础设施优化。但可视为 vLLM 持续改善开发者入门体验系列工作的一部分。