我首先使用 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/