Python3.6.0下pip代理环境中--trusted-host失效及证书验证问题求助
解决代理环境下pip安装时SSL证书问题及证书验证配置
首先,你遇到的pip._vendor.requests.exceptions.SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol错误,大概率是因为代理环境中pip没有正确处理SSL证书,或者你指定的--trusted-host覆盖范围不全导致的。结合Python 3.6.0的环境,我给你梳理几个可行的解决方案:
1. 补全--trusted-host覆盖的PyPI域名
旧版本的pip(尤其是Python 3.6默认的pip版本)对PyPI的源覆盖不全,现在PyPI的包索引和下载涉及多个核心域名:pypi.python.org、pypi.org、files.pythonhosted.org。只指定其中一个的话,下载包时访问其他域名仍会触发SSL验证失败。
你可以把所有相关域名都加入参数:
pip install --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org package
2. 升级pip到适配Python 3.6的最新版本
Python 3.6已停止维护,但pip 20.3.x系列是最后支持它的版本。旧版本pip在代理和SSL处理上存在不少bug,升级后能解决很多兼容性问题:
pip install pip==20.3.4 --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org
3. 配置代理CA证书实现证书验证(而非跳过)
如果你的需求是验证证书而不是绕过验证,需要让pip信任代理的CA证书(代理通常会替换SSL证书链),有两种配置方式:
方式一:临时通过环境变量配置
执行pip命令前,设置REQUESTS_CA_BUNDLE指向代理CA证书路径:
- Linux/macOS:
export REQUESTS_CA_BUNDLE=/path/to/your/proxy-ca.crt pip install package - Windows(命令提示符):
set REQUESTS_CA_BUNDLE=C:\path\to\your\proxy-ca.crt pip install package
方式二:修改pip配置文件永久生效
创建或修改pip的配置文件:
- Linux/macOS:
~/.config/pip/pip.conf - Windows:
%APPDATA%\pip\pip.ini
在文件中添加以下内容:
[global] cert = /path/to/your/proxy-ca.crt # 若需要代理认证,可补充代理配置 proxy = http://your-proxy-address:port # 代理带用户名密码的格式:proxy = http://username:password@your-proxy-address:port
4. 确认代理环境变量配置正确
确保pip能识别到代理设置,可通过环境变量指定:
- Linux/macOS:
export http_proxy=http://your-proxy-address:port export https_proxy=http://your-proxy-address:port - Windows:
set http_proxy=http://your-proxy-address:port set https_proxy=http://your-proxy-address:port
内容的提问来源于stack exchange,提问作者Yugendhar Anveshra
相关产品推荐
相关产品推荐

