Python read pickle protocol 4 error: STACK_GLOBAL requires str

Python read pickle protocol 4 error: STACK_GLOBAL requires str

在Python3.7.5、ubuntu18.04中,pickle read报错,

pickle version 4

示例代码:

import pickle as pkl
file = open("sample.pkl", "rb")
data = pkl.load(file)

错误:

UnpicklingError Traceback (most recent call last) in
----> 1 data = pickle.load(file) UnpicklingError: STACK_GLOBAL requires str

从同一个文件对象读取解决了问题。

使用pandas读取也有同样的问题

原来是已知问题。有问题页面 github

我遇到了这个问题,只是在文件名末尾添加了 pckl

我也遇到了这个错误,结果是我用 pickle 打开了一个 numpy 文件。 ;)

我的问题是我试图在不同的 python 环境中 pickle 和 un-pickle - 注意确保你的 pickle 版本匹配!

也许这将是某人解决此错误的方法。 我需要加载一个 numpy 数组:

torch.load(file)

当我加载数组时,出现了这个错误。所需要做的就是将数组变成张量。 例如:

result = torch.from_numpy(np.load(file))