直接加--default-timeout=1000并配合清华镜像源可有效解决pip安装超时问题,因单纯延时无法规避pypi官方源对国内ip的速率限制和高丢包率。

直接加 --default-timeout=1000 就能解决大部分因网络波动引发的 pip 安装超时问题,但必须配合镜像源使用才真正有效。
pip install 为什么会卡在“Collecting”阶段超时
这个阶段 pip 正在从 PyPI 下载包元数据或 wheel 文件,网络抖动、DNS 解析慢、中间代理不稳定都会导致连接挂起。默认超时是 15 秒(较老版本)或无硬限制(新版本依赖底层 urllib3),但实际表现常为 30–60 秒后静默失败。
- 错误现象:命令行停在
Collecting pandas或Downloading numpy-*.whl不动,几秒后报ReadTimeoutError或直接退出 - 不是所有超时都显示 “timeout” 字样,有时只打印
ConnectionResetError或空行后中断 - 仅调大超时时间不换源,可能下载到一半又断——国内直连 pypi.org 的丢包率仍较高
临时生效:每次安装都加两个参数
最稳妥的单次修复方式,兼顾超时与源:
- 运行
pip install requests --default-timeout=1000 -i https://pypi.tuna.tsinghua.edu.cn/simple -
--default-timeout作用于整个请求生命周期(DNS + TCP 握手 + 下载),单位是秒,1000 是经验安全值(约 16 分钟) - 必须紧接在
install后、包名前,顺序错位会报错unrecognized arguments - 清华源(
https://pypi.tuna.tsinghua.edu.cn/simple)响应稳定,比阿里云源在部分教育网环境更可靠
永久生效:改 pip 配置文件,但要注意路径和格式
用户级配置优先于全局,避免权限问题;Windows 和 macOS/Linux 路径不同,且文件名易写错:
- Windows:在
%APPDATA%\pip\pip.ini中写入(注意是pip.ini,不是pip.conf) - macOS/Linux:在
$HOME/.pip/pip.conf中写入(目录需手动创建) - 配置内容必须严格如下(多一个空格或少一个换行都可能导致失效):
[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple default-timeout = 1000 trusted-host = pypi.tuna.tsinghua.edu.cn
-
trusted-host是必须项,否则 pip 会因 HTTPS 证书校验失败而拒绝访问镜像源
为什么不能只改 timeout 而不换源
单纯延长超时只是把失败时间拉长,无法解决根本问题:
- PyPI 官方源对国内 IP 有速率限制,频繁请求可能触发 429 响应,此时再长的 timeout 也无用
- 某些大包(如
torch)体积超 1GB,即使网络通畅,1000 秒 timeout 也可能不够——这时必须用--find-links指向离线 whl 目录 - 公司内网若走统一出口代理,还需额外配置
proxy参数,default-timeout对代理链路延迟无效
超时值不是越大越好,设成 5000 秒(近 1.4 小时)会让故障排查变困难——你得先分清是真卡住,还是该换源或检查代理。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











