MacOS 10.12.6下Python3.5用pip8.1.2装库遇SSL/TLS版本错误求助
你的问题核心是旧版本pip(8.1.2)不支持PyPI当前要求的TLS 1.2及以上协议——PyPI早在2018年就停止了对TLS 1.0/1.1的支持,而你的pip版本太老,无法建立符合要求的安全连接,才会抛出[SSL: TLSV1_ALERT_PROTOCOL_VERSION]错误。结合你用的Python3.5(已停止维护)和MacOS 10.12.6,给你几个可行的解决步骤:
1. 优先升级pip到Python3.5兼容的最新版本
因为直接用pip install --upgrade pip会因为同样的SSL问题失败,所以需要用官方提供的针对旧Python版本的升级脚本:
curl https://bootstrap.pypa.io/pip/3.5/get-pip.py | python3.5
这个脚本是专门为Python3.5这类已停止维护的版本准备的,能绕过协议限制完成pip升级。升级完成后,pip版本会更新到适合Python3.5的最高兼容版(一般是pip20.3.x系列),之后再安装Scrapy就应该能正常连接PyPI了:
pip install scrapy
2. 临时绕过SSL验证(应急方案,不推荐长期使用)
如果暂时无法升级pip,可以在安装Scrapy时添加--trusted-host参数跳过证书验证:
pip install scrapy --trusted-host pypi.python.org --trusted-host files.pythonhosted.org
注意:这种方法会降低安全性,仅作为临时应急手段,升级pip才是根本解决办法。
3. 用conda安装(如果已配置conda环境)
如果你已经为Python3.5配置了conda环境,可以尝试用conda安装Scrapy,conda的源对旧系统和旧Python版本的兼容性更好:
conda install scrapy
额外提示
Python3.5在2020年已经停止官方维护,后续会遇到越来越多的库兼容性问题。如果你的项目允许,建议升级到Python3.7及以上版本(MacOS 10.12.6支持到Python3.9),能避免很多类似的协议、依赖问题。
内容的提问来源于stack exchange,提问作者aabujamra

