joblib:无法从其他目录加载转储的joblib文件

2024-09-29 20:29:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从另一个目录加载转储的joblib文件,它给出了以下错误

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 

福比

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')

加载器.py

import joblib
foob = joblib.load(r'D:\foob.joblib')
print(foob)  

如果我尝试从同一个目录(D)加载foob.joblib,它工作正常,在从不同的目录运行loader.py时会发生错误


Tags: inpygpuliblineloadanacondapickle
1条回答
网友
1楼 · 发布于 2024-09-29 20:29: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的顶部

相关问题 更多 >

    热门问题