[Scons-users] Reading Python 3.8.0 .dblite file from Python 2.7
Mats Wichmann
mats at wichmann.us
Tue Dec 3 19:47:53 EST 2019
On 12/3/19 5:35 PM, Don Baldwin wrote:
> Hi,
>
> ignoring invalid `dblite' file
>
> From what I've read, this seems to be due to the incompatibility
> between the pickle library between Python 2 and 3.
evolving protocols, yes. actually it's not just py 2/3, 3.8 added a new
pickle protocol that earlier Py3's can't read.
> I see the following code in lib/SCons/compat/__init__.py:
>
> # Was pickle.HIGHEST_PROTOCOL
> # Changed to 2 so py3.5+'s pickle will be compatible with py2.7.
> PICKLE_PROTOCOL = pickle.HIGHEST_PROTOCOL
>
>
> When I modify this to set PICKLE_PROTOCOL = 2, my tools are able to
> successfully read the .dblite files, but I'd prefer not to have to
> modify the native SCons code.
>
> Is there a way to set this value from my SConscript file, or some other
> preferred way to handle this situation?
No. SCons picks the highest available pickle version which is arguably
a dubious choice for your situation (and mine, it turns out), but that's
what it does. There's no official API-ish way to request a different
one. that would be a feature request, I guess.
More information about the Scons-users
mailing list