【问题标题】:TypeError: cannot pickle '_hashlib.HASH' objectTypeError: 无法 pickle \'_hashlib.HASH\' 对象
【发布时间】:2022-12-22 02:17:58
【问题描述】:

我有一个相当简单的数据类。

把它放在泡菜上(用莳萝代替真正的泡菜)。

import dill as pickle

经过一些其他操作:

  • 加载相同的 pickle 失败
  • 尝试保存同一对象失败

错误:

TypeError: cannot pickle '_hashlib.HASH' object

我没有使用任何 hashlib 库(我知道)。

以前我能够毫无问题地腌制/取消腌制同一个对象/数据类。

【问题讨论】:

    标签: python pickle dill


    【解决方案1】:

    这很愚蠢,但很难弄清楚。

    问题是我用对象(数据类)的定义重新加载了模块。在那之后,pickle/dill 没有按预期工作(正如不太了解 pickle 工作原理的天真头脑所期望的那样)。

    here所述,重新加载是为了开发,有一些副作用。

    如果您需要使用 pickle 和 reload,宁愿重启内核并重新开始。

    如果您真的需要一种按值而不是按引用进行腌制的方法,请尝试cloudpickle(尚未使用)。

    cloudpickle 和 pickle 的一个重要区别是 cloudpickle 可以按值序列化函数或类,而 pickle 只能通过引用序列化它。

    https://github.com/cloudpipe/cloudpickle

    【讨论】:

      猜你喜欢
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多