python - 导入错误 : No module named "utils" when using pickle. 加载

标签 python import pickle importerror

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

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

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

project2
   -data
   -main.py

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

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

最佳答案

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

关注this了解更多信息

关于python - 导入错误 : No module named "utils" when using pickle. 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63101601/

相关文章:

python - 达到 k 的最小步数

python - 使用 unicode 时颜色条标签截止

python 导入模块 vs 将脚本作为 subprocess.popen 运行

java - JUnit - Java 项目结构

python - 在带有 cPickle 的 python 3.7 上使用 python 2.7 代码时出现 UnicodeDecodeError

Python,奇怪的内存消耗行为

ruby-on-rails - 如何使Mongoid的哈希类型字段的 pickle 步骤

python - 无法使用 Sphinx 可读性主题

Python statsmodels lib 弃用警告

java - 从 Java 批量导入时覆盖 Azure Cosmos DB 中已存在的项目