已关闭
【建议】移除 install_deps.sh 中硬编码的清华 PyPI 镜像源,尊重全局配置并优化报错提示 #1337
李超然创建于  3月20日关闭于  4月13日
李超然
李超然成员
3月20日 创建

1. 问题描述

ops-transformer 仓库的 install_deps.sh 脚本中(约 156 行处),安装 Python 依赖时直接硬编码了清华大学的 PyPI 镜像源(pypi.tuna.tsinghua.edu.cn)。

    pip3 install \
        ...
        -i https://pypi.tuna.tsinghua.edu.cn/simple \
        --trusted-host pypi.tuna.tsinghua.edu.cn \
        --no-deps \

带来的痛点:

  1. 清华源(TUNA)的并发限流策略极为严格,在集中构建时极易触发 429 Too Many Requests,导致脚本执行中断。
  2. 海外开发者或处于强管控企业内网的用户,无法连通该域名,导致构建完全阻塞。
  3. 最关键的是: 硬编码覆盖了开发者自己系统中的全局最优配置(如 ~/.pip/pip.conf 中配置的华为云源或公司内网私有源),剥夺了环境配置的自由度。

2. 改进建议(遵循开源社区最佳实践)

构建脚本不应越权接管用户的包管理器配置,建议将环境配置权交还给开发者,遵循系统的全局默认源。

但为了兼顾国内新手开发者的体验,建议采用**“移除硬编码 + 失败时友好拦截提示”**的方案:

  1. 移除 pip3 install 命令中的 -i--trusted-host 参数。
  2. 捕获 pip3 install 的执行状态,如果因为网络问题失败,在控制台打印高亮的错误提示,并给出配置国内镜像(如华为云镜像)的指导命令。

3. 代码修改示例

建议将 install_deps.sh 中的相关逻辑修改为:

    if ! pip3 install \
        "numpy>=1.21.6" \
        "sympy>=1.10.1" \
        "psutil>=5.9" \
        "scipy>=1.7.3" \
        cloudpickle \
        ml-dtypes \
        tornado \
        absl-py \
        "decorator>=5.1.0" \
        attrs \
        jinja2 \
        mpmath \
        --no-deps \
        --timeout=60; then
        
        echo -e "\033[31m[Error] Python 依赖安装失败!\033[0m"
        echo "如果是网络超时导致,建议您配置本地 pip 镜像源后再试,例如华为云镜像:"
        echo "命令: pip config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple"
        exit 1
    fi
    echo "CANN Python dependencies installed."

这种处理方式既保证了构建脚本的克制与规范,又提供了极具价值的排障指导,提升了基础设施脚本的鲁棒性。

likedislike
李超然李超然成员
3月20日 issue类型由 任务 改变为 缺陷
wang-minbo成员
3月21日 评论:

您好,感谢您提的优化建议,我们在验证效果后会给您答复

likedislike
Wwang-minbo成员
3月21日 将 wang-minbo 设为负责人
wang-minbo成员
4月8日 评论:

您好,我们基于您的issue进行了测验,发现去掉-i后会优先去官方下载镜像,导致下载速度变慢,体验变差;
现在按以下方案进行了适配:
1、优先下载用户指定镜像
2、如果用户未指定镜像,优先使用清华镜像
3、如果清华镜像超时,则使用huaweicloud镜像

likedislike
CANN-robotCANN-robot成员
4月13日 关闭了 issue
CANN-robotCANN-robot成员
4月13日 添加了label:resolved