class Foo必须在解酸环境中通过相同的路径导入,以便可以重新实例化酸洗的对象。
我认为您的问题是您
Foo在要作为main(
__name__ == "__main__")执行的模块中定义。Pickle会将路径(而不是类object
/ definition !!!)序列化为
Foo位于主模块中。
Foo不是主要打开脚本的属性。
在此示例中,您可以重新定义
classFoo解腌脚本,并且它应该也可以解腌。但实际上是要有一个在两个脚本之间共享的公共库,并且可以通过同一路径使用。示例:
Foo在foo.py中定义
简单的例子:
$ PROJECT_DIR / foo.py
class Foo(object): pass
$ PROJECT_DIR / picklefoo.py
import cPicklefrom foo import Foodef pickleObject(): obj = Foo() savefile = open('pickle.txt', 'w') cPickle.dump(obj, savefile, cPickle.HIGHEST_PROTOCOL)pickleObject()
$ PROJECT_DIR / unpicklefoo.py
import cPicklesavefile = open('pickle.txt', 'r')obj = cPickle.load(savefile)...
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)