Pull Request已成功合入, 合并人@CANN-robot
(感谢 sinat_31531339 的贡献)变更摘要
此 PR 主要解决 init_env.sh 脚本中 CANN 版本硬编码问题(#148),将默认版本从固定的 8.5.0 改为从 version.cmake 动态解析,并支持在本地缺失该文件时通过 curl 从 oam-tools 远程仓库拉取。同时,Python 依赖安装逻辑从硬编码包列表重构为读取 requirements.txt,芯片类型到 ops 包名的映射也得到了修正。相关中英文文档同步更新。
主要改动
-
CANN 版本自动解析:新增
get_cann_version_from_cmake()函数,从version.cmake中解析set_cann_package(... VERSION "...")获取版本号;若本地文件不存在且 curl 可用,则从OAM_TOOLS_RAW_BASE_URL远程拉取。CANN_VERSION默认值从硬编码"8.5.0"改为空字符串,在main()中自动调用解析函数赋值。 -
芯片类型映射修正:新增
get_ops_package_chip_type()函数,将910_93、910C、A3等变体统一映射为A3,910B映射为910b,确保 ops 包名(如Ascend-cann-A3-ops_...)正确匹配实际发布名称。 -
Python 依赖安装重构:
install_python_deps()从硬编码pytest>=9.0.1等包列表改为读取仓库根目录的requirements.txt,并在本地文件缺失时支持从远程OAM_TOOLS_RAW_BASE_URL/requirements.txt通过 curl 管道安装,增强了 curl 管道场景下的可用性。 -
帮助信息动态化:
show_help()中 CANN 版本默认值改为从version.cmake动态获取显示,--chip-type选项说明增加了910_93/A3、950等类型提示,示例中910_93的注释改为 "Use A3 ops package"。 -
文档同步更新:
docs/zh/quick_install.md和docs/en/quick_install.md删除了执行init_env.sh后再手动pip install -r requirements.txt的旧说明,与脚本自动安装依赖的行为保持一致。


代码审查
审查结论
各文件审查结果
| 文件 | 结果 |
|---|---|
docs/en/quick_install.md |
无问题 — 删除了过时的手动 pip install 步骤,与 init_env.sh 的自动化行为保持一致 |
docs/zh/quick_install.md |
无问题 — 同上,中文文档同步更新 |
init_env.sh |
发现 2 个问题(1 个 P2 + 1 个 P3) |
发现汇总
- P2(1 个):
main()中get_cann_version_from_cmake失败时依赖set -e隐式退出,缺少用户友好的错误总结。在curl | bash场景下若远程version.cmake不可达,用户难以快速定位原因。 - P3(1 个):
show_help在无法解析版本时,--help输出显示字面字符串"version.cmake"作为默认版本,容易让用户误解。
整体评估
此变更整体质量良好,核心逻辑正确:通过解析 version.cmake 自动同步 CANN 版本、映射芯片类型到正确的 ops 包名、使用 requirements.txt 替代硬编码依赖列表,三处改动均准确解决了 Issue #148 的需求。两个发现均为边缘场景的健壮性/体验改进,不影响正常功能路径。风险较低,建议合并。
⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。


/approve


描述
本 PR 解决 Issue #148 中
init_env.sh默认安装版本硬编码为 8.5.0 的问题,并补齐初始化脚本在管道执行、依赖安装、异常路径下的行为。主要改动:
init_env.sh默认从version.cmake解析 CANN 版本号,不再硬编码默认版本;本地缺少version.cmake时支持从OAM_TOOLS_RAW_BASE_URL远程获取。install_python_deps改为安装仓库requirements.txt,本地缺失时支持远程获取;获取或安装失败时返回错误,避免静默跳过。/dev/stdin;pip 失败时保留最后几行错误输出,方便定位网络、权限或包冲突问题。skipping installation (non-root user)并返回失败,避免后续编译阶段才暴露问题。910_93/910C/A3使用A3,910B/910b使用910b,950显式使用950。关联的Issue
关联 Issue #148
测试
bash -n init_env.shbash init_env.sh --helpbash -c 'source <(sed "$ d" init_env.sh); get_cann_version_from_cmake version.cmake'bash -c 'source <(sed "$ d" init_env.sh); get_ops_package_chip_type 910_93; get_ops_package_chip_type 910C; get_ops_package_chip_type 910B; get_ops_package_chip_type 910b; get_ops_package_chip_type 950'version.cmake获取失败,验证输出明确错误并返回失败。cmake,验证install_system_deps输出 non-root 跳过安装说明并返回失败。requirements.txt获取失败,验证输出明确错误并返回失败。git diff --check -- init_env.sh docs/zh/quick_install.md docs/en/quick_install.mdbash build.sh -u --ut --noexec文档更新
更新
docs/zh/quick_install.md和docs/en/quick_install.md,删除过时的手动pip install -r requirements.txt步骤。类型标签