Joblib ImportError。试图加载一个我认为它不应该首先寻找的库

时间:2018-06-01 12:58:12

标签: python python-2.7 joblib

我正在使用joblib.dump()保存对象。当我尝试使用另一个Python实例(但版本相同)打开它时,joblib抱怨它无法加载特定模块:

ImportError: No module named some_module

现在,该模块some_module确实在该Python实例中不可用。 但问题是,我试图加载的对象根本不需要该模块。

所以我的问题是,为什么joblib认为它需要这个包?

它是否以某种方式包含转储时处于活动状态的所有模块?

1 个答案:

答案 0 :(得分:1)

Joblib使用picklepickle可以将任意Python对象存储到磁盘,然后将其恢复到另一个进程。但是,如果该Python对象是或包含在执行转储的代码中定义的类的实例,那么该类定义需要在执行加载的代码中可用。

如果该类是在导入转储的代码导入的库中定义的,那么它还需要在加载时导入该库。您无需执行导入:pickle将为您执行此操作。但它必须可以导入。

我知道您不认为您尝试加载的对象需要该类。但是pickle确实这么认为。