必须同时修改 default-timeout 和更换国内镜像源才能解决 pip 安装超时问题,因 ReadTimeoutError 是单数据块读取超时而非整体下载超时,仅换源无法避免网络抖动导致的 chunk 超时,仅调 timeout 仍受海外服务器高延迟影响;且需显式添加 trusted-host 才能通过 HTTPS 证书校验。

必须同时改 default-timeout 和换国内镜像源,只做其中一项大概率还会失败。
为什么只换源或只调 timeout 都不行
pip 的 ReadTimeoutError 不是“整个下载卡住 15 秒”,而是“某个数据块读取等待超时”。比如装 torch,它分几十个 chunk 流式下载,哪怕前 99% 都顺利,第 100 个 chunk 因本地网络抖动卡了 16 秒,就直接报错——而默认 default-timeout=15 正好卡在这个阈值上。
只换清华源(-i https://pypi.tuna.tsinghua.edu.cn/simple)能提速,但无法避免单 chunk 超时;只加 --default-timeout=120 却仍连海外服务器,DNS 解析、TLS 握手、首字节延迟都可能吃掉大半时间,实际有效读取窗口反而更窄。
-
timeout参数已弃用,只管连接建立阶段,不管后续读取 -
default-timeout才真正控制 DNS + connect + read 全流程 - 国内镜像源(如清华、阿里云)的 HTTPS 域名必须显式加进
trusted-host,否则证书校验失败
临时安装:命令行一次生效
适合 CI 脚本、快速验证、或不想改配置的场景。注意参数顺序和必需项:
-
-i必须写在包名之前,例如:pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple - 必须配
--trusted-host,否则 HTTPS 会失败:pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn - 务必加上
--default-timeout=120:pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn --default-timeout=120 - 阿里云源地址是
https://mirrors.aliyun.com/pypi/simple/,注意末尾斜杠不能少
永久配置:跨平台推荐用 pip config
比手动建 pip.ini 或 pip.conf 更可靠,自动处理路径和权限问题:
- 执行:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple - 执行:
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn - 执行:
pip config set global.default-timeout 120 - 验证是否生效:
pip config list,应看到三行输出 - Windows 用户若遇到
pip config报错,可退而求其次:在%APPDATA%\pip\pip.ini中手动写入,内容为:
[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple default-timeout = 120 trusted-host = pypi.tuna.tsinghua.edu.cn
容易被忽略的关键细节
很多人配完以为万事大吉,结果装大包还是失败——问题常出在这些地方:
- 虚拟环境里 pip 是独立的,
pip config默认改的是当前环境的配置,不是 base 环境;激活虚拟环境后要重新运行配置命令 -
default-timeout=120是合理值,设成 600 就算真断网也要等 10 分钟才报错,拖慢调试节奏 - 某些公司内网会拦截或重写 HTTPS 请求,即使配了
trusted-host仍可能失败,此时需联系 IT 部门放行对应域名 - 如果用的是 Conda 环境,
pip行为受 conda 自身配置影响,建议优先用conda install,或确保 conda 没禁用 pip
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











