根本原因是默认源pypi.org位于境外,受跨境网络影响;清华源最稳因其每5分钟同步、BGP+CDN覆盖广;推荐pip≥21.3下用pip config设清华源,大包安装建议加--no-deps。

pip install 下载慢,根本原因就一个:默认走 https://pypi.org/simple,服务器在境外,DNS 解析、TCP 建连、TLS 握手、数据传输全受跨境链路影响。换源是最快见效的解法,但不是所有“换源”都可靠,也不是所有场景下换源就够用。
为什么清华源最稳,而不是随便选个国内镜像
镜像源不是“有就行”,关键看三件事:同步频率、带宽余量、CDN 覆盖。清华源(https://pypi.tuna.tsinghua.edu.cn/simple)每 5 分钟同步一次官方索引,主节点在北京,教育网直连无阻,公网也部署了多线 BGP+ 全国 CDN。阿里源偶尔在大包(如 torch)分片下载时出现 403;豆瓣源同步延迟可达 2 小时,装新版 requests 可能拉不到最新版;中科大源北方响应快,但南方用户首包延迟高。
实操建议:
- 日常开发、CI/CD 流水线、安装
torch/tensorflow等大包,无条件优先用清华源 - 若公司内网策略屏蔽教育网域名,临时切阿里源(
https://mirrors.aliyun.com/pypi/simple/),别用豆瓣源应付正式环境 - 不要在
pip.ini或pip.conf里写http://协议——现代 pip 默认拒绝非 HTTPS 源,会报Could not fetch URL
pip config set global.index-url 不生效的常见原因
命令看似简单,但失败率很高。最常踩的坑是 pip 版本太低或配置层级冲突。
检查方式:pip config debug,看输出里 global 配置是否真被加载。如果没列出来,说明写错了位置或被更高优先级配置覆盖。
实操建议:
- 确保 pip ≥ 21.3(2021 年后版本),旧版不支持
pip config命令,会静默失败 - Windows 用户必须用
%APPDATA%\pip\pip.ini,不能放 C:\pip\pip.ini 或项目根目录 - Linux/macOS 用户注意权限:~/.pip/pip.conf 必须是用户可读,且不能是 root 创建的(否则普通用户运行 pip 时读不到)
- 如果已存在
~/.config/pip/pip.conf,它优先级高于~/.pip/pip.conf,删掉前者再试
安装 torch/tensorflow 还是卡住?得关掉 pip 的依赖预解析
这类包体积大、依赖树深,pip 默认会先递归解析全部依赖并逐个下载,期间任何一环超时就中断。这不是源的问题,是 pip 自身策略问题。
实操建议:
- 加
--no-deps跳过依赖检查,先装主包:pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --no-deps - 再单独装缺失依赖,比如
pip install numpy typing-extensions -i https://pypi.tuna.tsinghua.edu.cn/simple - 或者用
--find-links+--no-index强制只从指定链接找(适合离线或定制化部署) - 避免同时跑多个
pip install进程——pip 的缓存锁机制会导致排队等待,看起来像“卡住”
缓存和代理不是万能的,但能补源解决不了的缺口
镜像源解决的是“下载起点远”,缓存解决的是“重复下载”,代理解决的是“路径绕行”。三者定位不同,混用反而容易出问题。
实操建议:
- 本地缓存有用,但别手动指定
--cache-dir:pip 默认就启用了~/.cache/pip(Linux/macOS)或%LOCALAPPDATA%\pip\Cache(Windows),改了反而可能因权限或路径不存在失效 - 公司网络若强制走代理,务必配
HTTPS_PROXY环境变量,且值必须含协议(https://proxy.example.com:8080),少一个s就失败 - 别用 HTTP 代理去连 HTTPS 源——pip 会直接拒绝,报错
Cannot connect to proxy. - whl 文件手动下载仅适用于单机、无 CI 场景;自动构建中硬编码 whl 路径等于放弃版本管理,不推荐
pyproject.toml 里一个无关子依赖也拉下来。这时候盯着进度条没用,得看 pip install -v 输出的最后一行错误,再决定是换源、关校验,还是换安装方式。


















