SSL:Ubuntu 16.0.4中Python pip的CERTIFICATE_VERIFY_FAILED错误

SSL: CERTIFICATE_VERIFY_FAILED error from Python pip in Ubuntu 16.0.4

python pip突然停止工作,并给出ssl:certificate_verify_failed错误。我无法安装任何PIP包。sudo pip install scikit映像引发以下错误

Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)'),)': /simple/scikit-image/
Could not fetch URL https://pypi.python.org/simple/scikit-image/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/scikit-image/ (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)'),)) - skipping

我尝试使用easy_install,但它给出了相同的SSL错误。当我尝试使用wget下载5GB的zip文件时,下载的文件大小以kbs为单位。有人能为上述问题提出解决办法吗?

谢谢您


它可能与最近PYPI域的变化有关。变更公告: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
  • 文件.pythonhosted.org

此外,您还可以尝试某些pip选项:$ python -m pip --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org ... --proxy ...

如果过时的OS根证书有问题,PIP使用URLLIB3和certifi库进行SSL证书验证和TLS连接。你可以尝试一下:$ pip install --user --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org certifi

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

顺便说一句,与sudo apt不同,不建议运行带有根访问权限的sudo pip install命令来安装或升级python包,因为它会干扰OS包管理器子系统(apt、yum等),并可能影响依赖于系统python的基本OS(ubuntu、debian、fedora等)组件。--user标志允许将包安装到home dir(在~/.local/lib下);否则可以使用virtualenv。

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