SSL:来自 Ubuntu 16.0.4 中 Python pip 的 CERTIFICATE_VERIFY_FAILED 错误

Posted

技术标签:

【中文标题】SSL:来自 Ubuntu 16.0.4 中 Python pip 的 CERTIFICATE_VERIFY_FAILED 错误【英文标题】:SSL: CERTIFICATE_VERIFY_FAILED error from Python pip in Ubuntu 16.0.4 【发布时间】:2018-09-07 12:09:27 【问题描述】:

Python pip 突然停止工作,并给出 SSL: CERTIFICATE_VERIFY_FAILED 错误。 我无法安装任何 pip 包。 sudo pip install scikit-image 抛出以下错误

在连接被 'SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败) 中断后重试 (Retry(total=0, connect=None, read=None, redirect=None, status=None)) ( _ssl.c:590)'),)': /simple/scikit-image/ 无法获取 URL https://pypi.python.org/simple/scikit-image/:确认 ssl 证书时出现问题: HTTPSConnectionPool(host='pypi.python.org', port=443):最大重试次数超出了 url:/simple/scikit-image/ (由 SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:590)'),) 引起)- 跳过

我尝试使用 easy_install,但它给出了相同的 SSL 错误。 当我尝试使用 wget 下载 5GB 的 zip 文件时,下载的文件大小为 KBs 有人可以就上述问题提出解决方案吗。

谢谢

【问题讨论】:

升级到 9.0.2 时是否开始出现这种情况? pip --version 的输出是什么? 我在更新到 v10.0.0 后遇到了完全相同的问题,有人能解决吗? 【参考方案1】:

可以关联到 PyPI 域的recent change。 变更公告:https://pyfound.blogspot.com/2018/03/warehouse-all-new-pypi-is-now-in-beta.htmlhttps://pyfound.blogspot.com/2017/01/time-to-upgrade-your-python-tls-v12.html

如果您从代理/防火墙后面运行 pip,请确保它允许访问/来自:

pypi.org files.pythonhosted.org

您也可以尝试某些pip 选项:$ python -m pip <command> --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org ... --proxy ...

如果过时的 OS 根证书出现问题,pip 使用 urllib3 和 certifi 库进行 SSL certificate verification 和 TLS 连接。你可以试试看:$ pip install --user --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org certifi

如果仍然不行,请浏览 PyPI.org 并从其 “下载文件” 部分下载 python certifi package,然后手动安装:$ pip install --user --no-index ~/Downloads/certifi-2018.11.29-py2.py3-none-any.whl

顺便说一句,与sudo apt 不同,以root 访问权限运行sudo pip install 命令来安装或升级Python 包是not recommended,因为它会干扰您的操作系统包管理器子系统(apt、yum 等)并且可能影响依赖于系统 python 的基本操作系统(Ubuntu、Debian、Fedora 等)组件。 --user 标志允许将软件包安装到您的主目录(在 ~/.local/lib 下);否则你可以使用virtualenv。

对于系统范围的包部署,Ubuntu 希望我们使用apt 包管理器。有许多(不是全部)python 包,包括您需要的 scikit - 只需使用 $ apt search(与旧的 $ apt-cache search 相同)来查找它,$ apt show 用于包描述,$ sudo apt install 用于安装。

【讨论】:

以上是关于SSL:来自 Ubuntu 16.0.4 中 Python pip 的 CERTIFICATE_VERIFY_FAILED 错误的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu16.0.4 安装mysql

ubuntu16.0.4中系统设置下的语言支持和 软件更新打不开问题

Ubuntu16.0.4.1安装lnmp

Ubuntu16.0.4安装jdk8

ubuntu16.0.4 设置静态ip地址

下载编译运行android 7.1系统(ubuntu 16.0.4)