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获取更多信息
我首先使用 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获取更多信息