由于 SSL 证书错误,pip 无法获取 URL

由于 SSL 证书错误,pip 无法获取 URL

突然间,Python 的包管理器 pip 无法再安装新模块。问题在于获取 URL,原因似乎是 SSL 证书。我大概明白这意味着什么,但并不完全明白,我不知道如何解决。

运行时的示例pip install fastnumbers

Could not fetch URL https://pypi.python.org/simple/fastnumbers/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/fastnumbers/ (C
aused by SSLError(SSLError(1, '_ssl.c:499: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version'),)) - skipping
  Could not find a version that satisfies the requirement fastnumbers (from versions: )
No matching distribution found for fastnumbers

在尝试与包索引建立连接最多四次后会显示以下内容:

  Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '_ssl.c:499: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version'),)':
 /simple/fastnumbers/

您可以使用--trusted-host以下选项绕过 SSL 连接:pip install --trusted-host pypiorg fastnumbers但即使这样也不起作用。这是真的很奇怪,当我们明确禁用 SSL 时(针对该主机),为什么 pip 会强制使用 SSL?

在我的机器上安装了不同的 Python 时都会发生这种情况:一个是本地的,一个是虚拟环境

我浏览了许多不同的帖子,但找不到适合我的解决方案。

答案1

SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version错误发生在安装了 Python 2.7.6 及更早版本的 Windows 上(请参阅第 26 期),原因是 Windows 版 2.7.6 是基于 OpenSSL 0.9.8 构建的,而 OpenSSL 0.9.8 不支持 TLSv1.2。最近从 转移到pypi.python.orgpypi.org,PyPI 存储库已删除对 TLSv1.0 和 TLSv1.1 的支持,因此如果您使用 Python 2.7.6 或更早版本,则必须更新到较新版本(当前为 2.7.15)才能使用 来安装软件包pip

相关内容