【问题标题】:SSL: CERTIFICATE_VERIFY_FAILED error from Python pip in Ubuntu 16.0.4SSL:来自 Ubuntu 16.0.4 中 Python pip 的 CERTIFICATE_VERIFY_FAILED 错误
【发布时间】: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 后遇到了完全相同的问题,有人能解决吗?

标签: python ubuntu ssl pip


【解决方案1】:

可以关联到 PyPI 域的recent change
变更公告:
https://pyfound.blogspot.com/2018/03/warehouse-all-new-pypi-is-now-in-beta.html
https://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 用于安装。

【讨论】:

    猜你喜欢
    • 2015-12-22
    • 2015-05-05
    • 2022-01-18
    • 1970-01-01
    • 2019-04-06
    • 2018-12-12
    • 2017-01-30
    • 2020-01-14
    • 2019-08-01
    相关资源
    最近更新 更多