首页 > 解决方案 > Windows 10 中的 Pip ReadTimeoutError

问题描述

从其主网站下载的全新 Python 3.7 64 位安装,在 Windows 10 Pro 上运行。使用具有管理员权限的 PowerShell。Pip 总是抛出 ReadTimeoutError

命令:

python -m pip -vvv install --upgrade pip

返回以下内容:

未设置配置变量“Py_DEBUG”,Python ABI 标签可能不正确 未设置配置变量“WITH_PYMALLOC”,Python ABI 标签可能不正确 创建的临时目录:C:\Users\vbfal\AppData\Local\Temp\pip-ephem-wheel -cache-sotpqqgg 创建的临时目录:C:\Users\vbfal\AppData\Local\Temp\pip-install-qqmlc7qa 1 个位置来搜索 pip 的版本:* https://pypi.org/simple/pip /获取页面https://pypi.org/simple/pip/查找“ https://pypi.org/simple/pip/" 在缓存中 没有可用的缓存条目 开始新的 HTTPS 连接 (1): pypi.org Incremented Retry for (url='/simple/pip/'): Retry(total=4, connect=None, read=None, redirect=无,状态=无)重试(重试(总计=4,连接=无,读取=无,重定向=无,状态=无))连接被'ReadTimeoutError(“HTTPSConnectionPool(主机='pypi.org',端口=443): 读取超时。(读取超时=15)")': /simple/pip/ 开始新的 HTTPS 连接 (2): pypi.org Incremented Retry for (url='/simple/pip/'): Retry (total=3, connect=None, read=None, redirect=None, status=None) 连接中断后重试 (Retry(total=3, connect=None, read=None, redirect=None, status=None)) 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): 读取超时。(read timeout=15)")': /simple/pip/ 开始新的 HTTPS 连接 (3): pypi.org Incremented Retry for (url='/simple/pip/'): Retry(total=2, connect=None , read=None, redirect=None, status=None) 连接被 'ReadTimeoutError("HTTPSConnectionPool(host= 'pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/pip/ 开始新的 HTTPS 连接 (4): pypi.org Incremented Retry for (url='/simple /pip/'): 重试(total=1, connect=None, read=None, redirect=None, status=None) 重试(Retry(total=1, connect=None, read=None, redirect=None, status= None)) 在连接被 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): 读取超时。(read timeout=15)")': /simple/pip/ 开始新的 HTTPS 连接 (5): pypi.org Incremented Retry for (url='/simple/pip/'): Retry(total=0, connect=None , read=None, redirect=None, status=None) 连接被 'ReadTimeoutError("HTTPSConnectionPool(host= 'pypi.org', port=443): 读取超时。(读取超时=15)")': /simple/pip/ 开始新的 HTTPS 连接 (6): pypi.org 无法获取 URLstatus=None)) 连接被 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/pip/ 开始新的 HTTPS连接 (6): pypi.org 无法获取 URLstatus=None)) 连接被 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/pip/ 开始新的 HTTPS连接 (6): pypi.org 无法获取 URL https://pypi.org/simple/pip/:连接错误:HTTPSConnectionPool(host='pypi.org',port=443):最大重试次数超出了 url:/simple/pip/ (由 ReadTimeoutError(“HTTPSConnectionPool( host='pypi.org', port=443): Read timed out. (read timeout=15)")) - 跳过安装的版本(10.0.1)是最新的(过去的版本:无)要求已经最新:c:\program files\python37\lib\site-packages (10.0.1) 中的 pip 清理... 未设置配置变量“Py_DEBUG”,Python ABI 标签可能不正确配置变量“WITH_PYMALLOC”未设置,Python ABI 标签可能不正确 1 个位置来搜索 pip 的版本:* https://pypi.org/simple/pip/获取页面https://pypi.org/simple/pip/查找"https://pypi.org/simple/pip/" 在缓存中 没有可用的缓存条目 开始新的 HTTPS 连接 (1): pypi.org 无法获取 URL https://pypi.org/simple/pip/ : 连接错误: HTTPSConnectionPool(host='pypi.org', port =443): url: /simple/pip/ 超过最大重试次数(由 ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=5)")) -跳过

我尝试ping pypi,它似乎没问题:

使用 32 字节数据 ping pypi.org [151.101.64.223]:来自 151.101.64.223 的回复:字节=32 时间=12ms TTL=57 来自 151.101.64.223 的回复:字节=32 时间=25ms TTL=57 来自 151.101.64.223 的回复: bytes=32 time=17ms TTL=57 来自 151.101.64.223 的回复: bytes=32 time=211ms TTL=57

151.101.64.223 的 Ping 统计信息:数据包:发送 = 4,接收 = 4,丢失 = 0(0% 丢失),以毫秒为单位的近似往返时间:最小值 = 12 毫秒,最大值 = 211 毫秒,平均值 = 66 毫秒

起初 curl 到 pypi.org 似乎暗示了根本原因,返回:

curl:请求被中止:无法创建 SSL/TLS 安全通道。在 line:1 char:1 + curl pypi.org + ~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

我运行以下命令强制 curl 使用 TLS 1.2:

[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"

然后使 curl 工作(仅用于会话)返回状态 200。

但是很可惜,pip 一直在上面抛出完全相同的错误消息。正如其他帖子中所建议的那样,我还尝试将超时范围增加到 100 甚至 1000,因为,好吧,Windows ......但正如预期的那样,失败只需要更长的时间。

谁能帮我破译和修复这些,好吗?非常感谢!

(此时切换到 Linux 不是一个选项......)

标签: python-3.xpipwindows-10tls1.2

解决方案


我知道这是一个旧帖子,但是试图提供帮助却遇到了同样的问题。

通过将优先级从 IPv6 更改为 IPv4 解决了此问题。

您可以尝试暂时禁用 IPv6 协议,然后再次尝试 PIP。如果可行,我建议重新激活 IPv6,然后搜索 IPv4 优先于 IPv6,执行此操作的方式因操作系统而异。


推荐阅读