我尝试使用dill在两个不同的环境(机器学习研究和生产)之间共享对象。在
一个简单的例子:
软件包/模块包:
class P:
def __init__(self, a, b):
self.a = a #for example a dict
self.b = b #a function
def save_A(*, path,a,b):
import dill
p = A(a,b)
dill.dump(p, open(path, "wb"))
软件包/模块包:
^{pr2}$现在,我尝试在不同的repo中将此对象加载到不同的包中 b包/生产周期公司名称:
import dill
with open("test.p",'rb') as fp:
a = dill.load(fp)
我得到的错误是:
return StockUnpickler.find_class(self, module, name)
ImportError: No module named 'module_a'
Dills似乎尝试从调用save函数的模块中重新导入导入。如果我将模块b中的内容包含在模块a中(例如在if __name__=="__main__"
块中),那么一切都可以好吧。这个但是不可行,因为有很多对象需要进行酸洗。我使用的是python3.5。我真的不明白是什么导致了这种情况,为什么dill还记得导入路径。如果我遇到一个错误,抱怨A
不在名称空间中,我可以理解(即使dill应该将类定义与实例一起打包),但这一点我真的无法理解。在
目前没有回答
相关问题 更多 >
编程相关推荐