Python3.5/Pip9.0.1出现[TLSV1_ALERT_PROTOCOL_VERSION]错误求助
解决TLSV1_ALERT_PROTOCOL_VERSION错误的方案
你碰到的这个问题,根源其实是旧版本的pip不支持TLSv1.2协议——PyPI早就停止了对TLSv1.0和TLSv1.1的支持,而你用的pip 9.0.1是2017年的老版本,默认不会启用TLSv1.2,哪怕你的Python和OpenSSL版本已经支持这个协议。
你升级Python到3.5.5的思路没错,但漏掉了pip本身的版本更新。下面是具体的解决步骤:
1. 用官方脚本强制升级pip
直接用pip3.5 install --upgrade pip肯定会因为TLS错误失败,所以得用官方的bootstrap脚本来升级:
curl https://bootstrap.pypa.io/pip/3.5/get-pip.py -o get-pip.py python3.5 get-pip.py
这个脚本会给Python3.5安装最高兼容的pip版本(20.3.4),它已经支持TLSv1.2,能正常连接PyPI。
2. 重新升级praw
等pip升级完成后,再运行你原来的命令:
pip3.5 install --upgrade praw
这时候TLS错误应该就消失了,而且随着pip升级,requests、urllib3这些依赖也会被更新到支持SNI的版本,之前的SNIMissingWarning也会跟着解决。
补充说明
你当前的OpenSSL 1.0.2o和Python3.5.5其实都支持SNI和TLSv1.2,问题完全出在pip版本太旧,没用到这些新特性。对于Python3.5这类较老的版本,升级pip是解决这类PyPI连接问题的通用办法。
内容的提问来源于stack exchange,提问作者Zeno
相关产品推荐
相关产品推荐

