无法安装 Python 包 [SSL:TLSV1_ALERT_PROTOCOL_VERSION]

2024-12-03 08:44:00
admin
原创
181
摘要:问题描述:我正在尝试使用 安装 Python 库pip,收到 SSL 错误:~/projects/base  pre-master± pip install xdict Collecting xdict Could not fetch URL https://pypi.python.org/simp...

问题描述:

我正在尝试使用 安装 Python 库pip,收到 SSL 错误:

~/projects/base  pre-master±  pip install xdict

Collecting xdict
  Could not fetch URL https://pypi.python.org/simple/xdict/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) - skipping
  Could not find a version that satisfies the requirement xdict (from versions: )
No matching distribution found for xdict

pip 版本:pip 9.0.1

我该如何修复这个错误?


解决方案 1:

升级 pip 如下:

curl https://bootstrap.pypa.io/get-pip.py | python

sudo python注意:如果不在虚拟环境中,则可能需要使用上述内容。

(请注意,pip使用pipie进行升级pip install --upgrade pip也无法正确升级。这只是一个先有鸡还是先有蛋的问题。pip除非使用 TLS >= 1.2,否则将不起作用。)

正如在这个详细答案中提到的,这是由于最近 pip 的 TLS 弃用。Python.org 网站已经停止对 TLS 版本 1.0 和 1.1 的支持。

从 Python 状态页面:

已完成- 轮流限电已结束,TLSv1.0 和 TLSv1.1 已禁用。4 月 11 日,15:37 UTC

对于 PyCharm (virtualenv) 用户:

  1. 使用 shell 运行虚拟环境。(将“./venv/bin/activate”替换为你自己的路径)

source ./venv/bin/activate
  1. 运行升级

curl https://bootstrap.pypa.io/get-pip.py | python
  1. 重新启动 PyCharm 实例,并在“首选项”中检查您的 Python 解释器。

解决方案 2:

但是如果curl命令本身出现错误,或者升级后仍然出现“tlsv1 alert protocol version”pip错误,则意味着你的操作系统底层 OpenSSL 库版本<1.0.1或 Python 版本< 2.7.9(或 Python 3 中的 < )不支持大约一年前需要连接到 PyPI 的3.4较新的 TLS 1.2 协议。你可以在 Python 解释器中轻松检查它: pip

>>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 0.9.8o 01 Jun 2010'
>>> ssl.PROTOCOL_TLSv1_2
 AttributeError: 'module' object has no attribute 'PROTOCOL_TLSv1_2'

(AttributeError而不是预期的‘5’) 意味着ssl针对旧的 openssl lib 编译的 Python stdlib 模块缺乏对 TLSv1.2 协议的支持(即使 openssl 库可以或可以在以后更新)。

幸运的是,无需升级 Python (以及整个系统)就可以解决这个问题,只需手动安装额外的 Python 包即可——详细的分步指南可在 Stackoverflow 上找到。

请注意,curlpipwget都依赖于相同的 OpenSSL 库来建立 SSL 连接(使用命令)。libcurl 从 curl 版本7.34$ openssl version开始支持 TLS 1.2 ,但如果您拥有 OpenSSL 版本 1.0.2(或更高版本),则旧版本的 curl应该能够连接。


PS

对于Python 3,请在任何地方使用python3pip3(除非您处于 venv/virtualenv 中),包括上面curl的命令:

$ curl https://bootstrap.pypa.io/get-pip.py | python3 --user

解决方案 3:

按照@Anupam 在 OS X 上的回答,无论我使用什么权限运行它,都会导致以下错误:

由于 EnvironmentError: [Errno 13] 权限被拒绝: 无法安装软件包...

最终有效的方法是直接从我的浏览器从 PyPI 下载一个较新的 pip 包(9.0.3) - https://pypi.org/simple/pip/,提取内容,然后使用 pip 在本地安装该包:

pip install ./pip-9.0.3/

这修复了我的[SSL: TLSV1_ALERT_PROTOCOL_VERSION]错误。

解决方案 4:

@Anupam的解决方案对我有用。但是,我必须使用sudo并指定虚拟 Python 环境的确切位置:

curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python

解决方案 5:

为了升级本地版本,我使用了一个略微不同的版本:

curl https://bootstrap.pypa.io/get-pip.py | python - --user

如果您将 pip 和包保存在您的主目录下,如本要点中所述,就会出现此问题。

解决方案 6:

以下解决方案对我有用:

brew install python2

它也升级pip到了 1.10.1 版本

解决方案 7:

检查你的 TLS 版本:

python2 -c "import urllib2,json; print(json.loads(urllib2.urlopen('https://www.howsmyssl.com/a/check').read())['tls_version'])"

如果您的 TLS 版本低于 1.2,那么您必须升级它,因为 PyPI 存储库正处于弃用早期 TLS 的衰退期。

来源 -是时候升级你的 Python 了:TLS v1.2 即将成为强制性标准

您可以使用以下命令升级 TLS 版本:

sudo apt-get update && sudo apt-get install openssl libssl-dev

这应该可以解决你的问题。祝你好运!

编辑:无论 TLS 版本如何,您都可以使用自己的私有 Python 软件包存储库下载软件包。
私有 Python 软件包存储库

解决方案 8:

对于所有python3pip3用户来说:

curl https://bootstrap.pypa.io/get-pip.py | sudo python3

然后假设你想安装 pandas

pip3 install pandas --user

解决方案 9:

这对我有用。在 python 之前添加 sudo

curl https://bootstrap.pypa.io/get-pip.py |sudo python

解决方案 10:

对于 Python2 WIN10 用户:

1.彻底卸载python,包括所有文件夹。

2.获取并安装最新的 python-2.7.msi (ver 2.7.15)

3.完成第2步后,你会发现pip也已经安装完成了。

4.现在,如果您的系统环境没有改变,您可以使用pip来安装包。“tlsv1 alert protocol version”将不会出现。

解决方案 11:

我尝试了所有现有的修复方法,但都没有效果

我通过从https://www.python.org/downloads/mac-osx/下载 .pkg 重新安装了 python 2.7(也将安装 pip)

安装下载 pkg 后对我有用

解决方案 12:

我也遇到了这个问题。根本问题是 Python 2.7 版本 < 2.7.9 中的 ssl 库不再兼容 pip 机制。

如果您在 Windows 上运行,并且您(像我们一样)无法轻松地从不兼容的 2.7 版本升级,FWIW,我发现如果您将以下文件从另一台计算机上最新版本的 Python(例如 Python 2.7.15)的另一个安装复制到您的安装中:

    Libssl.py
    libs_ssl.lib
    DLLs_ssl.dll

它将有效地将您的 SSL 层“升级”为受支持的层;然后我们就可以再次使用 pip,甚至升级 pip。

解决方案 13:

通过以下方式安装 pip 的答案:

  1. curl https://bootstrap.pypa.io/get-pip.py |sudo python或者

  2. curl https://bootstrap.pypa.io/get-pip.py | python

对我来说不起作用,因为我一直收到错误:

Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)) - skipping
ERROR: Could not find a version that satisfies the requirement pip (from versions: none)
ERROR: No matching distribution found for pip

我必须pip通过以下方式手动安装:

  1. 前往pip分发网站

  2. 下载tar.gz版本

  3. 在本地解压文件并cd放入目录中

  4. 跑步python setup.py install

解决方案 14:

这对我有用,我安装了最新版本的 pip,然后安装了库(ciscoconfparse)。

升级 pip:

curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python

解决方案 15:

myenv:

蟒蛇2.7.14

pip 9.0.1

Mac OS X 10.9.4


我的解决方案:

  1. get-pip.pyhttps://packaging.python.org/tutorials/installing-packages/手动下载

  2. 跑步python get-pip.py


參考文獻:

https://github.com/pypa/warehouse/issues/3293#issuecomment-378468534

https://packaging.python.org/tutorials/installing-packages/

安全下载 get-pip.py [1]

运行 python get-pip.py。[2] 这将安装或升级 pip。此外,如果尚未安装 setuptools 和 wheel,它将安装它们。

确保 pip、setuptools 和 wheel 是最新的

虽然仅使用 pip 就足以从预先构建的二进制档案中进行安装,但更新的 setuptools 和 wheel 项目副本有助于确保您也可以从源档案中进行安装:

python -m pip install --upgrade pip setuptools wheel

解决方案 16:

我在 Windows10 上也遇到了这个问题,并尝试了所有解决方案,但没有解决我的问题。

C:\python367\Scripts>pip 安装 Flask

收集 Flask 无法找到满足要求的版本 Flask (来自版本:) 未找到与 Flask 匹配的发行版

之后,我发现 pip 配置文件已被修改。因此,我将 设置pip.ini为原始默认配置,重新运行 pip 命令,它就可以正常工作了!

总结一下我的解决方案:

  1. 检查pip.ini(通常在路径下C:ProgramDatapip)是否被修改;

  2. 如果步骤 1 中的答案为是,请尝试将其重置为默认配置。

解决方案 17:

或者只是所需的库不在存储库中。我是 Python 新手,所有关于升级 pip 的建议最终都被证明是误导性的。我只需查看https://pypi.org/,发现库(在我的情况下是 airflow)停留在某个旧版本,之后它被重命名。是的,那个愚蠢的解决方案也是可能的 :-)。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用