作者:lumanman158 | 来源:互联网 | 2023-02-01 11:15
我有一堆从导入的类创建的对象
module = imp.load_source(packageName, packagePath)
我要泡菜 只要packagePath
直接在Python路径或工作目录中,一切都可以完美工作。
但是一旦我将其移动到其他地方,我就会感到恐惧
ImportError: No module named test_package
我尝试添加一种__reduce__
将类作为第一个值返回的方法。我尝试使用dill
,它应该能够序列化完整的类,而不是对该类的简单引用(并且我尝试将其与结合使用__reduce__
)。
当前的工作方式是,将它们与包路径一起双击在一个负责导入包的对象中:
class Container(object):
def __init__(self, packagePath, packageName, objectsDump= None):
self.package = imp.load_source(packageName, packagePath)
self.packagePath = packagePath
self.packageName= packageName
if objectsDump is not None:
self.objects = dill.loads(objectsDump)
def __reduce__(self):
return (self.__class__,
(self.packagePath, self.packageName, dill.dumps(self.objects))
我发现这种方式确实令人费解,我想知道:是否有更Python化的方式来实现这一目标?
注意:所有这些都发生在Python 2.7.10,莳萝0.2.6中。所有要序列化的对象都是新型对象(继承自object
)。