首页 > 解决方案 > 将自定义 python 类的实例保存到文件

问题描述

我想将自定义 Python 类的多个实例保存到一个文件中。
该类是Loess,取自https://github.com/joaofig/pyloess,它执行本地化回归。

以下是保存过程的 MWE:

import pickle
import numpy as np
from Loess import Loess

xarr = np.linspace(0, 4, 100) * np.pi
yarr = 2*np.sin(xarr) + np.random.rand(len(xarr))

loess = Loess(xarr, yarr)

with open("localised_regression.pkl", "wb") as output:
    pickle.dump(loess, output)

现在是检索过程

import pickle

with open("localised_regression.pkl", 'rb') as input_:
    localised_regression = pickle.load(input_)

当我在 jupyter 笔记本上执行此操作时(在一个笔记本上运行第一个片段,在另一个笔记本上运行第二个片段),它可以完美运行。
从笔记本转储实例Loess并从终端或另一台机器检索它,它不起作用。
我收到ModuleNotFoundError: No module named 'Loess'错误消息

我什至尝试在尝试检索的python会话中导入模块,但没有任何变化。

似乎它只能在执行倾倒的同一位置内工作。
我正在为 Python shell 和 jupyter notebook 使用 Python 3.7.7 和相同的 conda 环境。

我检查了其他答案(例如如何完全在 Python 中保存/读取类),但没有运气。

我试过保存到 numpy 文件,但同样的故事。
我也试过用marshaland倾倒json,但都抱怨。

有人对如何解决这个问题有建议吗?谢谢

标签: pythonclassjupyter-notebookpickle

解决方案


推荐阅读