After update to pip 10 I get: Cache entry deserialization failed, entry ignored

Cecil Westerhof Cecil at decebal.nl
Thu Apr 26 11:25:24 EDT 2018


tartley at gmail.com writes:

> On Wednesday, April 18, 2018 at 1:59:14 AM UTC-5, Cecil Westerhof wrote:
>> After I updated pip2/3 to 10 from 9 I sometimes get:
>>     Cache entry deserialization failed, entry ignored
>> 
>> For example when I execute:
>>     pip3 list --outdated
>> 
>> But not always.
>> 
>> What could be happening here? And how would I solve this?
>> 
>> -- 
>> Cecil Westerhof
>> Senior Software Engineer
>> LinkedIn: http://www.linkedin.com/in/cecilwesterhof
>
> It sounds like there's a bug in pip10 that makes the cache entries use a different format for Python2 versus Python3.
> https://github.com/pypa/pip/issues/5250

I have seen that, but that did not work in my case.


> So either:
>
> * erase your cache directory. On *nix it's ~/.cache/pip.

That would make the usage of cache superfluous and I am wondering if
that is really the issue. See reply below.


> or
>
> * run pip with --no-cache-dir

Tried this, but it did not work.


> or
>
> * run pip with --cache-dir=X to set a different cache dir for Python2 vs Python3.
>
> or
>
> * await a pip10 bugfix?

For the moment I do in my (tcl) script:
    while {[catch ${command} errorStr opts]} {
        incr errors
        if {${debug}} {
            puts ------------------------------------------------------------
            puts ${opts}
            puts ------------------------------------------------------------
        }
        if {${errors} >= ${maxTries}} {
            error "Could not get ${pip} information with ${errors} tries"
        }
    }

There is not always a problem and if there is a problem it is never
more as once. (Till now.)
I use command because I do it for pip2 and pip3.
It is filled with:
    # First 2 lines are a header
    set command  {set outdated                                      \
                      [lrange                                       \
                           [split [exec ${pip} list --outdated] \n] \
                           2 end]}
And pip is pip2 or pip3.

-- 
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof


More information about the Python-list mailing list