我正在尝试从另一个目录加载一个转储的load文件,它会给出以下错误
Traceback (most recent call last):
File "D:\dir\loader.py", line 5, in <module>
foob = joblib.load(r'D:\foob.joblib')
File "C:\programming\programmeFiles\anaconda\envs\tensor_gpu\lib\site-packages\joblib\numpy_pickle.py", line 585, in load
obj = _unpickle(fobj, filename, mmap_mode)
File "C:\programming\programmeFiles\anaconda\envs\tensor_gpu\lib\site-packages\joblib\numpy_pickle.py", line 504, in _unpickle
obj = unpickler.load()
File "C:\programming\programmeFiles\anaconda\envs\tensor_gpu\lib\pickle.py", line 1088, in load
dispatch[key[0]](self)
File "C:\programming\programmeFiles\anaconda\envs\tensor_gpu\lib\pickle.py", line 1376, in load_global
klass = self.find_class(module, name)
File "C:\programming\programmeFiles\anaconda\envs\tensor_gpu\lib\pickle.py", line 1426, in find_class
__import__(module, level=0)
ModuleNotFoundError: No module named 'foo' 再现错误的最小代码
目录如下所示
D-
\
foo.py
dumper.py
foob.joblib
dir-
\
loader.py foo.py
class Foo:
def __init__(self):
self.s = "here at Foo"
def __repr__(self):
return "fooObject"dumper.py
import joblib
import foo
foob = foo.Foo()
joblib.dump(foob,'foob.joblib')loader.py
import joblib
foob = joblib.load(r'D:\foob.joblib')
print(foob) 如果我试图从同一个目录(D)加载foob.joblib,那么在从不同目录运行loader.py时会发生错误
发布于 2021-06-03 08:27:23
joblib.load()需要所有需要的模块才能在路径中进行无酸洗。因此,您需要在加载时添加foo.py的位置,即系统路径。
例如,添加:
import sys
import os
this_dir = os.path.dirname(__file__) # Path to loader.py
sys.path.append(os.path.join(this_dir, <rel_path_to_foo.py>))到loader.py的顶端
https://stackoverflow.com/questions/64404643
复制相似问题