# PR #7403 完整报告

- 仓库：`verl-project/verl`
- 标题：[doc] chore: Change requirements install order
- 合并时间：2026-08-14 11:35
- 原文链接：http://prhub.com.cn/verl-project/verl/pull/7403

---

## 执行摘要

本 PR 对 Ascend/NPU 安装流程做了一次极小的顺序调整：将 `requirements-npu.txt` 的安装步骤移到 `pip install -e .` 之后，避免 `setup.py` 在依赖解析时覆盖刚安装的 NPU 特定依赖。变更涉及 1 个安装脚本和 1 份安装文档，各改动 1 行，无运行时逻辑变化，风险极低。

## 功能与动机

PR 标题和 body 表明核心诉求是“Avoid requirements-npu.txt overwrited by setup.py”。原流程先安装 `requirements-npu.txt`，再执行 `pip install -e .`；后者会触发 `setup.py` 的依赖解析，可能重装或降级 NPU 相关包，导致 Ascend 环境依赖版本失控。交换顺序后，可编辑安装先完成，NPU 依赖最后落地，保证 NPU 环境依赖稳定。

## 实现拆解

1. **修改安装脚本**：在 `scripts/install_vllm_mcore_npu.sh` 中，将 `pip install -r requirements-npu.txt ...` 与 `pip install -v -e .` 两行顺序互换，使可编辑安装先执行、NPU 依赖后执行。
2. **同步文档**：在 `docs/ascend_tutorial/get_start/install_guidance_A5.rst` 中，将 `pip install requirements-npu.txt` 与 `pip install -e .` 的顺序对齐脚本，防止用户按文档操作时遇到同样问题。
3. **配套说明**：无测试、配置或部署改动；变更仅影响 Ascend 安装入口的顺序，未改变任何 API 或运行时行为。

### 本 PR 仅交换两处安装命令的先后顺序，未引入新的实现逻辑，故不展示源码片段。核心变动可概括为：`pip install -e .` 先于 `pip install -r requirements-npu.txt` 执行。

## 评论区精华

本 PR 没有任何 review 评论或讨论线程，审核人 wucong25 直接 APPROVE，未提出疑问或修改意见。变更简单明确，没有产生技术争议。

## 风险与影响

- **技术风险**：极低。最需留意的是 `requirements-npu.txt` 与 `setup.py` 之间存在版本冲突时，新顺序会让 NPU 依赖“赢”，这正是预期目的；但若用户后续再次运行 `pip install -e .`，仍可能重新覆盖这些依赖，这属于 pip 依赖解析的固有限制，本 PR 只能缓解首次安装场景。
- **维护风险**：`scripts/install_vllm_mcore_npu.sh` 与 `install_guidance_A5.rst` 两处顺序现已保持一致，未来若只改动其中一处，会导致脚本与文档流程漂移。
- **影响范围**：仅影响 Ascend/NPU 用户的安装步骤，不涉及训练、推理等运行时路径。

## 关联脉络

本 PR 与近期 NPU 安装与 CI 维护工作同属一条演进线：
- `#7310` 为同一文档补充 `requirements-npu.txt` 安装步骤；
- `#7384` 继续完善 Ascend 安装文档（日志过滤提示）；
- `#7345` 升级 Ascend 依赖版本并同步更新 `requirements-npu.txt` 与安装指南。

可以看出团队持续在收敛 NPU 安装流程的可复现性，本 PR 是该方向上的一个小修补。