从保存的参考中导入课程

时间:2019-10-06 13:03:01

标签: python pickle

给定在当前上下文中导入的python类,是否可以保存对该类的可序列化(可拾取)引用,该引用可稍后在另一个python上下文中导入?

例如

首先保存参考。在此示例中,get_referenceimport_reference是我希望实现的功能。

import pickle
from torch.optim import SGD

sgd = SGD()
# ... do work ...

opt_reference = get_reference(sgd.__class__)
with open('SGD_ref.pkl', 'wb') as fp:
    pickle.dump(opt_reference, fp)

然后导入参考

import pickle

with open('SGD.pkl', 'rb') as fp:
    opt_reference = pickle.load(fp)

SGD = import_reference(opt_reference)

sgd = SGD()

我不希望保存SGD函数本身的代码或实现,因为它也自行导入了一些东西。我假设要保存其引用的模块已类似安装并导入到将在其中使用的每个python环境中。

我发现一种简单的方法是使用this post中的函数来获取get_reference函数的路径,然后为import reference执行eval(f"import {opt_reference}")。这似乎太骇人而且非常不安全(尽管在这种情况下我并不关心安全性。)

还有更好的方法吗?

0 个答案:

没有答案