【发布时间】:2019-03-04 09:53:35
【问题描述】:
我在挑选一个类从另一个模块导入一个类时遇到问题。
想象一下,我有一个文件 classA.py,其中定义了 A 类:
class A:
def execute(self):
print('Hello from class A!')
然后我还有另一个文件classB.py:
import dill
import classA
class B:
def __init__(self):
self.a = classA.A()
def execute(self):
self.a.execute()
print('Hello from class B!')
b = B()
with open('/file/path', 'wb') as f:
dill.dump(b, f)
如果然后我尝试从不同的目录中解压缩创建的文件:
with open('file/path', 'rb') as f:
b = dill.load(f)
我得到错误:
ModuleNotFoundError: No module named 'classB'
它当然可以在我拥有文件 classA.py 和 classB.py 的同一个文件夹中工作,因为解释器可以找到这两个类的定义。
所以我想我必须以某种方式将类的定义带入 pickle 文件。我该怎么做?
谢谢 斯特凡诺
【问题讨论】:
-
dill库是否导入成功?
-
是的,莳萝没有问题
-
当我尝试在与我创建文件的会话不同的会话中解压文件时,问题就出现了
-
“不同的会话”是什么意思?
标签: python class pickle definition