python - 无法在 Ubuntu 14.04 上升级 pip 1.5.4 - InsecurePlatformWarning : A true SSLContext object is not available

标签 python python-2.7 ssl pip ubuntu-14.04

我目前在 Ubuntu 14.04 和 python 2.7.6 上运行 pip,版本 1.5.4,无法将 pip 升级到最新版本。

当我运行 pip install --upgrade pip 时,出现以下错误:

无法获取索引基础 URL https://pypi.python.org/simple/ 在 ./.venv/lib/python2.7/site-packages 中找不到满足 pip 要求的任何下载 下载/解压 pip 打扫干净... 在 ./.venv/lib/python2.7/site-packages 中根本找不到 pip 的发行版 将失败的调试日志存储在/home/buffcat/.pip/pip.log

当我尝试使用 get-pip.py 升级时,出现以下 ssl 错误:

/tmp/tmpKVfWOr/pip.zip/pip/_vendor/urllib3/util/ssl_.py:369: SNIMissingWarning: 已发出 HTTPS 请求,但 TLS 的 SNI(服务器名称指示)扩展在此平台上不可用。这可能会导致服务器提供不正确的 TLS 证书,从而导致验证失败。您可以升级到更新版本的 Python 来解决这个问题。有关详细信息,请参阅 https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings /tmp/tmpKVfWOr/pip.zip/pip/_vendor/urllib3/util/ssl_.py:160: InsecurePlatformWarning: 真正的 SSLContext 对象不可用。这会阻止 urllib3 正确配置 SSL,并可能导致某些 SSL 连接失败。您可以升级到更新版本的 Python 来解决这个问题。有关详细信息,请参阅 https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings 在连接被“SSLError(SSLError(1, '_ssl.c:510: error:14090086:SSL routines: SSL3_GET_SERVER_CERTIFICATE:证书验证失败'))':/simple/pip/

如何升级我机器上的 pip?

最佳答案

虽然它是 not recommended要升级 Ubuntu 系统 pip(Ubuntu 发行版提供的 python-pip debian 软件包)绕过 apt-get,可以接受在 venv/virtualenv 或您的用户主目录级别(--user pip 选项)执行此操作。这种方式允许在不与“系统”pip 冲突的情况下使用它。您似乎在 virtualenv 中工作,这是一个很好的做法。

SSLError 是由于您的系统底层OpenSSL 库版本<1.0.1 和Python 版本<2.7.9 不支持较新的TLS protocol version 1.2 引起的。那个 PyPI expects从大约一年前开始。因此 pip 无法再通过旧的 SSL/TLS 协议(protocol)连接到 PyPI。
您可以通过以下方式检查版本:
$ python -c "import ssl; print(ssl.OPENSSL_VERSION)"&& openssl 版本
即使没有 pip,也可能会重现错误,例如:
$ curl -i https://pypi.org/simple/--tlsv1
curl: (35) error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version

由于pip无法连接PyPI,我们可以手动升级:

  • 在 Firefox 中,打开 Python 包索引 official webpage并找到 the pip project ,
  • 在那里选择“下载文件”——这是一个直接链接:https://pypi.org/project/pip/#files
  • pip 击最近的wheel格式(.whl)的pip包文件进行下载,
  • 安装在您一直在使用的 venv/virtualenv 中,例如:

        $ source bin/activate
        (venv) $ pip install --no-index ~/Downloads/pip-19.0.1-py2.py3-none-any.whl
        (venv) $ pip --version
         pip 19.0.1 from ...
    

但是升级/安装更新的 pip 版本是成功的一半。为了能够连接到 PyPI,我们需要解决根本原因:InsecurePlatformWarning .. Caused by SSLError .. SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version'。 要修复它,您需要手动安装(以相同的方式)除 pip 之外的其他软件包。 Stackoverflow 上的详分割步指南:Unable to install Python packages using pip in Ubuntu Linux: InsecurePlatformWarning, SSLError, tlsv1 alert protocol version

关于python - 无法在 Ubuntu 14.04 上升级 pip 1.5.4 - InsecurePlatformWarning : A true SSLContext object is not available,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53505415/

相关文章:

python-2.7 - 两个日期时间文件之间的 Pandas 系列

java - ServerSocket 在转换为 SSLSocket 时不接受(空指针异常)

ssl - 有什么方法可以在免费的 heroku dyno 上添加免费的 SSL 证书?

python - 无法从 pyspark 读取 keystore 文件

python - 无法通过 PIP 将任何内容安装到虚拟环境

python - 分解高度分支的解析器的大多数 pythonic 方法

python - 查找前 10 个并将其从厘米转换为英寸 - Python

ssl - 如何将生成的 SSL 证书转换为 PKCS12

python - Pandas 数据帧 : convert Date format between two totally different formats

python - 如何从类中的方法获取一个值而不重新计算?