<p>pip 10:“点列表”警告“高速缓存条目反序列化失败,条目被忽略”</p>

创建于 2018-04-16  ·  27评论  ·  资料来源: pypa/pip

你好,
pip v.10反复警告“高速缓存条目反序列化失败,条目被忽略”:

$ uname
Darwin
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.13.4
BuildVersion:   17E199
$ brew info python<strong i="7">@2</strong>
python<strong i="8">@2</strong>: stable 2.7.14 (bottled), devel 2.7.15rc1, HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python@2/2.7.14_3 (4,603 files, 81.8MB) *
  Poured from bottle on 2018-03-10 at 22:25:36
 :
 :
$ brew info python3
python: stable 3.6.5 (bottled), devel 3.7.0b3, HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python/3.6.5 (4,768 files, 100.2MB) *
  Poured from bottle on 2018-03-30 at 20:43:21
 :
 :
$ pip2 -V
pip 10.0.0 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)
$ pip3 -V
pip 10.0.0 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
$ pip2 list --outdated
Package  Version Latest      Type 
-------- ------- ----------- -----
protobuf 3.5.1   3.5.2.post1 wheel
$ pip3 list --outdated
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Package  Version Latest      Type 
-------- ------- ----------- -----
protobuf 3.5.1   3.5.2.post1 wheel
$ 
cache vendored dependency auto-locked bug

最有用的评论

看来您搞砸了点子缓存。 它存储在~/.cache/pip

如果删除该目录,则应解决此问题。

所有27条评论

我还注意到Windows 7和10 Professional的64位版本存在相同的问题。 我只看到针对Python 3.5的问题,而不是针对Python 2.7或Python 3.6的问题(我对所有3个版本都有单独的安装)。 添加--format legacy或--no-cache-dir可使问题消除。

临时修复升级pip3使用。

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

代替pip install -U pip

对于pip2 pip2 install --upgrade pip

看来您搞砸了点子缓存。 它存储在~/.cache/pip

如果删除该目录,则应解决此问题。

谢谢。 重现此现象。 我已经确认pip3 list --no-cache-dir --outdated可以在没有警告的情况下工作。

我怀疑问题在于无法在Python 3中反序列化在Python 2中创建的缓存条目。如果我使用--cache-dir选项为Python 2和Python 3强制使用不同的缓存,问题就消失了。

错误消息是从C:\ Python36 \ Lib \ site-packages \ pip_vendor \ cachecontrol \ controller.py第139行生成的。最直接的原因是C:\ Python36 \ Lib \ site-packages中的Serializer.loads()失败。 \ pip_vendor \ cachecontrol \ serialize.py第75行。

谢谢。 您的分析听起来很合理。

@pradyunsg :通过删除缓存目录

AFAIU,在Python 3上使用--no-cache-dir只是解决此问题的临时方法(即,这是一个错误)。

我们能否使Python 2和3的共享缓存目录再次起作用(或者是否有原因,为什么相同版本的pip >= 10需要在PY2PY3上使用不同的缓存格式?

这似乎是一个严重的错误,一种快速的解决方法应该是确保缓存的条目文件名中包含序列化版本部分。

这在stderr上也很令人讨厌。

删除.cache目录并在该目录中创建2个新目录pip2pip3 ,暂时在我的一台Mac上为我解决了该问题,但在另一台Mac上却无法解决。 通过curl重新安装pip3没有帮助。 实际上,问题是不一致的,并且大多数情况(并非唯一)出现在pip3而非pip2上。

这可能是由于缓存管道中的错误所致-msgpack有一些历史记录,错误地围绕字节执行操作。

如果有人可以对此进行研究,那么在其中一名维护者没有时间之前,那会很酷。 :)

是否有人打算对此新引入的错误采取措施? 应尽快更新pip,以避免冲突不兼容的缓存。

此处提到的变通办法并不真正适用于所有情况,并且可能引起比排序更多的问题。 在缓存条目命名中添加版本控制部分将彻底解决此问题,即使缓存格式将再次更改。

如果每个python软件包开发人员使用tox来测试多个python版本,则可能会遇到此问题。 请不要要求他们为每个毒素目标隔离高速缓存,这违背了拥有高速缓存的目的。

我也有这个问题。

我也有同样的问题

怎么了?? 自9.0.1起存在太多错误和问题

@HakShak使用stderr的事实是一件好事。 POSIX规范文档要求所有记录消息都发送到stderr而不是stdout,包括错误,警告,信息,调试。 只有普通程序输出应转到stdin。 对于大多数工具,这通常意味着:计算机可分析的输出。 例如,在软件包管理器上,stdout应该仅包含已安装/已删除/已升级的软件包,而没有应包含在stderr中的样板文件。 我记得这些年来修复了一些不合规的工具。 输出流在这里不是问题。

另一方面,我刚刚观察到此错误已添加到18.0里程碑中,不确定当前的版本是10.0,因此不确定如何执行此错误。 是未来的很长一段时间,还是我不知道提高点子版本以匹配当年的计划?

是未来的很长一段时间,还是我不知道提高点子版本以匹配当年的计划?

我们改用CalVer(#5324),18.0版将是下个月的pip版本。

我发现在Python 2上,pip可以使用由Python 3运行填充的缓存,反之亦然。

在Py2上缓存的响应会导致在缓存中存储的标头在Py3上加载为bytes而不是str 。 这会导致反序列化失败。 正在PR上进行上游修复。

上游PR:ionrock / cachecontrol#190

上游PR https://github.com/ionrock/cachecontrol/pull/190在CacheControl 0.12.5中合并并发布。

当我们更新供应商的依赖项以准备下一个版本时,pip将吸收该更改。 :)

我有同样的问题。

这是我得到的错误

高速缓存条目反序列化失败,条目被忽略
连接被'ProtocolError('Connection abort ..'),ConnectionResetError(10054,'一个现有的连接被强制关闭远程主机',无,10054,无))':/ simple / pip /
连接被'ProtocolError('Connection aborted。'),ConnectionResetError(10054,'一个现有的连接被强制关闭远程主机',无,10054,无))':/ simple / pip /
连接被'ProtocolError('Connection abort ..'),ConnectionResetError(10054,'一个现有的连接被强制关闭远程主机',无,10054,无))':/ simple / pip /
连接被'ProtocolError('Connection abort ..',ConnectionResetError(10054,'一个现有的连接强行关闭)断开远程主机',无,10054,无))':/ simple / pip /
连接被'ProtocolError('Connection abort ..'),ConnectionResetError(10054,'现有连接被强制关闭远程主机',无,10054,无))':/ simple / pip /
要求已经是最新的:c:\ programdata \ anaconda3 \ lib \ site-packages中的pip
您正在使用pip版本9.0.3,但是可以使用版本18.0。
您应该考虑通过“ python -m pip install --upgrade pip”命令进行升级。

我如何避免这种情况。 由于这个原因,我无法安装任何其他软件包,因为它要求我升级pip。

看来您搞砸了点子缓存。 它存储在~/.cache/pip

如果删除该目录,则应解决此问题。

我更感兴趣的是什么是缓存条目反序列化?

https://github.com/pypa/pip/issues/5250#issuecomment -394706450详细说明了失败的原因。

本质上,由于将HTTP请求转换为字符串(序列化)时的不匹配而导致发生错误。 尝试再次将该字符串转换为http请求(反序列化)时,将显示此错误/警告。

看来您搞砸了点子缓存。 它存储在~/.cache/pip

如果删除该目录,则应解决此问题。

非常感谢。

轻松解决此问题,以管理员身份运行应用程序或终端

该线程已被自动锁定,因为它关闭后没有任何近期活动。 请为相关错误打开新一期。

此页面是否有帮助?
0 / 5 - 0 等级