导入错误:使用 pickle.load 时没有名为“utils”的模块

Hen*_*nry 5 python import pickle importerror

我首先使用 pickle.dump 将一些内容转储到 pickle 文件中。在 utils.load_data 中,我的项目层次结构如下所示

project1
  -utils
     -__init__.py
     -load_data.py
  -data
  (other folder...)
Run Code Online (Sandbox Code Playgroud)

然后它将 pickle 文件输出到数据文件夹中。然后我将 .pickle 文件移动到另一个项目,项目层次结构是

project2
   -data
   -main.py
Run Code Online (Sandbox Code Playgroud)

当我在这个 main.py 中运行 pickle.load() 操作时,它会提示错误作为标题。但是,如果我将 main.py 移回 project1 文件夹,则错误就会消失。所以问题一定出在文件上。

我的问题是,为什么 pickle 尝试从它的诞生地导入包?有人可以为此分享一个好的解释吗?我很困惑。

Atu*_*tul 9

默认情况下,unpickling 将导入它在 pickle 数据中找到的任何类。这意味着如果您已经 pickle 了一个自定义类并且正在某处取消它,pickle 将尝试导入该模块(utils在本例中)。所以你需要将模块放在文件夹utilsproject2

请关注以获取更多信息