Import error: No module named "utils" when using pickle.load

Import error: No module named "utils" when using pickle.load

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

project1
  -utils
     -__init__.py
     -load_data.py
  -data
  (other folder...)

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

project2
   -data
   -main.py

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

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

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

中安装 utils 模块

关注this获取更多信息