python-3.x - 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 不是一个选项......)
解决方案
我知道这是一个旧帖子,但是试图提供帮助却遇到了同样的问题。
通过将优先级从 IPv6 更改为 IPv4 解决了此问题。
您可以尝试暂时禁用 IPv6 协议,然后再次尝试 PIP。如果可行,我建议重新激活 IPv6,然后搜索 IPv4 优先于 IPv6,执行此操作的方式因操作系统而异。
推荐阅读
- python - Python / Pygame 网格设计因追加“索引超出范围”而失败
- r - 在 R 上使用 read.xlsx 产生错误
- docker - 无法从 SparkSubmitOperator 执行“spark-submit”
- python - 如何在 python 中为 hangman 打印先前解决的字母
- python - 有没有办法在 Python 中动态地将 r' 附加到一个字符串中?
- angularjs - 在 ie11 中使用这行代码时出现语法错误
- web-services - 允许将 CSR 导入 Microsoft CA 并接收证书的 API
- javascript - 从数组中创建树并将父字段的表示更改为对象而不是 ID
- microsoft-graph-api - microsoft graph api中的用户唯一身份
- android - 未知属性'manifestOutputDirectory'