Windows 10中的Pip ReadTimeoutError

时间:2018-09-22 23:06:49

标签: python-3.x powershell pip windows-10 tls1.2

从Windows 10 Pro的主网站下载的新Python 3.7 64位安装程序。使用具有管理员权限的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个位置   搜索点子的版本:   * https://pypi.org/simple/pip/正在获取页面https://pypi.org/simple/pip/,查找“ https://pypi.org/simple/pip/”   缓存中没有可用的缓存条目开始新的HTTPS连接   (1):pypi.org的(URL ='/ simple / pip /')递增重试:   重试(总数= 4,连接=无,读取=无,重定向=无,状态=无)   重试(Retry(total = 4,connect = None,read = None,redirect = None,   状态被断开后)   'ReadTimeoutError(“ HTTPSConnectionPool(host ='pypi.org',port = 443):   读取超时。 (读取超时= 15)“)':/ simple / pip /开始新的HTTPS   连接(2):pypi.org的重试次数增加了(url ='/ simple / pip /'):   重试(总数= 3,连接=无,读取=无,重定向=无,状态=无)   重试(Retry(total = 3,connect = None,read = None,redirect = None,   状态被断开后)   'ReadTimeoutError(“ HTTPSConnectionPool(host ='pypi.org',port = 443):   读取超时。 (读取超时= 15)“)':/ simple / pip /开始新的HTTPS   连接(3):pypi.org的重试次数增加了(url ='/ simple / pip /'):   重试(总数= 2,连接=无,读取=无,重定向=无,状态=无)   重试(Retry(total = 2,connect = None,read = None,redirect = None,   状态被断开后)   'ReadTimeoutError(“ HTTPSConnectionPool(host ='pypi.org',port = 443):   读取超时。 (读取超时= 15)“)':/ simple / pip /开始新的HTTPS   连接(4):pypi.org的重试次数增加了(url ='/ simple / pip /'):   重试(总计= 1,连接=无,读取=无,重定向=无,状态=无)   重试(Retry(total = 1,connect = None,read = None,redirect = None,   状态被断开后)   'ReadTimeoutError(“ HTTPSConnectionPool(host ='pypi.org',port = 443):   读取超时。 (读取超时= 15)“)':/ simple / pip /开始新的HTTPS   连接(5):pypi.org的重试次数增加了(url ='/ simple / pip /'):   重试(总计= 0,连接=无,读取=无,重定向=无,状态=无)   重试(Retry(total = 0,connect = None,read = None,redirect = None,   状态被断开后)   'ReadTimeoutError(“ HTTPSConnectionPool(host ='pypi.org',port = 443):   读取超时。 (读取超时= 15)“)':/ simple / pip /开始新的HTTPS   连接(6):pypi.org无法获取URL   https://pypi.org/simple/pip/:连接错误:   HTTPSConnectionPool(host ='pypi.org',port = 443):超过最大重试次数   网址:/ simple / pip /(由   ReadTimeoutError(“ HTTPSConnectionPool(host ='pypi.org',port = 443):读   时间到。 (读取超时= 15)“))-跳过已安装的版本(10.0.1)   是最新的(过去版本:无)   最新:c:\ program files \ python37 \ lib \ site-packages中的pip   (10.0.1)清理...未设置配置变量'Py_DEBUG',Python   ABI标签可能不正确,未设置配置变量“ WITH_PYMALLOC”,   Python ABI标签可能不正确1个用于搜索版本的位置   点数:   * 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):最大值   网址超出了重试次数:/ simple / pip /(由   ReadTimeoutError(“ HTTPSConnectionPool(host ='pypi.org',port = 443):读   时间到。 (读取超时= 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的回复:字节= 32   time = 17ms TTL = 57 151.101.64.223的回复:字节= 32时间= 211ms TTL = 57

     

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

乍一看,pypi.org似乎暗示了根本原因,并返回:

  

curl:请求已中止:无法创建SSL / TLS安全   渠道。在第1行:char:1   +卷曲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”

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

但是,a,pip不断抛出上面完全相同的错误消息。我也曾尝试将超时范围增加到100甚至增加到1000,如其他文章所建议的那样,因为Windows,但是,正如预期的那样,失败只花了更长的时间。

请问有人可以帮助我解密并修复这些问题吗?非常感谢!

(目前无法切换到Linux ...)

2 个答案:

答案 0 :(得分:1)

IPv4 优先于 IPv6(正如林池宇所写)。
从提升的命令提示符(按“开始”,键入“CMD”,右键单击“命令提示符”并选择“以管理员身份运行”):

netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 46 4

答案 1 :(得分:0)

我知道这是一篇旧文章,但是尝试提供帮助却遇到了同样的问题。

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

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