无法安装 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/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
使用pip
ie进行升级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) 用户:
使用 shell 运行虚拟环境。(将“./venv/bin/activate”替换为你自己的路径)
source ./venv/bin/activate
运行升级
curl https://bootstrap.pypa.io/get-pip.py | python
重新启动 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 上找到。
请注意,
curl
和pip
和wget
都依赖于相同的 OpenSSL 库来建立 SSL 连接(使用命令)。libcurl 从 curl 版本7.34$ openssl version
开始支持 TLS 1.2 ,但如果您拥有 OpenSSL 版本 1.0.2(或更高版本),则旧版本的 curl应该能够连接。PS
对于Python 3,请在任何地方使用
python3
和pip3
(除非您处于 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:
对于所有python3
和pip3
用户来说:
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 的答案:
curl https://bootstrap.pypa.io/get-pip.py |sudo python
或者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
通过以下方式手动安装:
前往
pip
分发网站下载
tar.gz
版本在本地解压文件并
cd
放入目录中跑步
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
我的解决方案:
get-pip.py
从https://packaging.python.org/tutorials/installing-packages/手动下载跑步
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 命令,它就可以正常工作了!
总结一下我的解决方案:
检查pip.ini(通常在路径下
C:ProgramDatapip
)是否被修改;如果步骤 1 中的答案为是,请尝试将其重置为默认配置。
解决方案 17:
或者只是所需的库不在存储库中。我是 Python 新手,所有关于升级 pip 的建议最终都被证明是误导性的。我只需查看https://pypi.org/,发现库(在我的情况下是 airflow)停留在某个旧版本,之后它被重命名。是的,那个愚蠢的解决方案也是可能的 :-)。