pip install卡在ssl错误是因https握手失败,主因包括代理配置错误(如https_proxy协议不匹配)、系统或python证书缺失、openssl版本过低、tls协议不兼容等,需逐项排查代理、证书路径、组件版本并优先修复根因而非仅用--trusted-host绕过。

为什么 pip install 会卡在 SSL 错误上
这不是 pip 本身坏了,而是它在建立 HTTPS 连接时,SSL/TLS 握手失败。常见错误信息如 SSL: CERTIFICATE_VERIFY_FAILED、WRONG_VERSION_NUMBER、check_hostname requires server_hostname,本质都是客户端(pip)和服务器(pypi.org 或镜像源)在证书验证、协议版本或代理透传环节没对上。企业内网、老旧系统、错误的代理配置、过期的 CA 证书,都可能触发这类问题。
检查并修正代理配置(最常踩的坑)
很多人的 HTTPS_PROXY 被设成了 https://proxy.example.com:8080,但实际代理只支持 HTTP 协议——这直接导致 WRONG_VERSION_NUMBER。正确做法是:
-
HTTP_PROXY和HTTPS_PROXY必须分开设置,且协议前缀要匹配代理服务真实支持的协议 - 如果代理是 HTTP 类型(如 Squid、CNTLM),
HTTPS_PROXY应设为http://proxy.example.com:8080,不是https:// - 临时验证:运行
curl -v https://pypi.org/simple/,观察 SSL handshake 阶段是否报错;若 curl 正常而 pip 报错,基本锁定是 pip 的代理或证书路径配置问题 - 清除干扰项:执行
unset HTTP_PROXY HTTPS_PROXY(Linux/macOS)或set HTTP_PROXY= && set HTTPS_PROXY=(Windows)后重试,排除代理误启
强制指定可信主机与证书路径
当系统证书缺失(如 CentOS 7)、Python 内置 certifi 陈旧,或网络中间件劫持了证书链时,--trusted-host 是最快绕过验证的手段,但必须配全:
跨40多个平台查询和管理营销数据——Google Analytics、Google Ads、Facebook Ads、Instagram、Shopify、HubSpot、Klaviyo、TikTok、LinkedIn等。
- 安装包时至少加两个参数:
--trusted-host pypi.org --trusted-host files.pythonhosted.org - 若用清华源等国内镜像,还需加上对应域名,例如:
--trusted-host pypi.tuna.tsinghua.edu.cn - 更稳妥的做法是让 pip 永久使用本地证书文件:
python -m pip config set global.cert /path/to/certifi/cacert.pem(路径可通过python -c "import certifi; print(certifi.where())"获取) - 不推荐长期用
--trusted-host,它只是跳过验证,不解决根因;尤其在生产环境,应优先修复证书链
升级关键组件并验证 OpenSSL 兼容性
老 Python(如 3.6 以下)、旧版 pip 或系统 OpenSSL 库不兼容 TLS 1.2+ 时,也会握手失败。重点操作:
- 先升级 pip 自身:
python -m pip install --upgrade pip setuptools wheel - 确认 OpenSSL 版本:
python -c "import ssl; print(ssl.OPENSSL_VERSION)",低于OpenSSL 1.1.1的建议升级 Python 或系统 OpenSSL - 在 Conda 环境中,优先用
conda install openssl certifi,比 pip 安装更稳定 - CentOS 7 用户务必运行:
sudo yum install python-certificates或sudo yum install ca-certificates,否则系统级证书库为空
真正难排查的往往是代理 + 证书 + OpenSSL 版本三者叠加。先关代理验证基础连通性,再逐个打开开关定位;--trusted-host 只是临时止血,别把它当默认配置写进 pip.conf 里。










