Joblib 导入错误。尝试加载一个库,我认为它不应该首先寻找

Tom*_*Tom 2 python python-2.7 joblib

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

ImportError: No module named some_module
Run Code Online (Sandbox Code Playgroud)

现在,该模块some_module确实在该 Python 实例中不可用。然而,关键是我试图加载的对象根本不需要那个模块。

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

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

Boa*_*les 5

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

如果该类是在执行转储的代码导入的库中定义的,那么它还需要在加载时导入该库。你不必做导入:pickle会为你做。但它必须可用于导入。

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