ImportError: No module named 'pandas.core.internals.managers'; 'pandas.core.internals' is not a package
ImportError: No module named 'pandas.core.internals.managers'; 'pandas.core.internals' is not a package
当我试图读取由 pandas 的旧版本保存的 pickle 文件时,它产生了一个 ImportError
。
ImportError: No module named 'pandas.core.internals.managers';
'pandas.core.internals' is not a package
Whosebug 上没有命中,所以我想分享我针对这个特定问题的解决方案。
由于对以前保存的泡菜文件进行了编码,导致出现此错误。如果您将 pandas 更新为新修订的版本,则会产生此导入错误。
我有同样的问题,但对我来说,它似乎来自 pickle 包/与 pandas 包的交互。
我有 Pandas 版本 0.23.4。
我使用 pandas.Dataframe.to_pickle
、python 3.6.6 和 Pandas 版本 0.23.4 保存了一些 pickle 文件。
然后我升级到 python 3.7.2(Pandas 版本 0.23.4),并且可以使用 pandas.Dataframe.read_pickle
读取那些 pickle 文件。
接下来,我将 pandas 升级到 pandas 0.24.1,它对我有用。我可以再次阅读那些文件。
我在使用 pandas 版本 0.23.4
时遇到了同样的错误。
我已经通过以下方式明确安装了 pandas 0.24.1
版本:
pip3 install pandas==0.24.1
这解决了我的问题(Python 我使用的版本是 3.5)
conda update pandas
如果你使用 conda 包管理器。
更新 pandas 是大多数情况下的最佳解决方案。但是,如果您在更新 pandas 版本时遇到限制,并且需要使用在更高版本中生成和腌制的 pandas 个对象,则可以添加 class 位置图,如下所示。
from pandas.compat.pickle_compat import _class_locations_map
_class_locations_map.update({
('pandas.core.internals.managers', 'BlockManager'): ('pandas.core.internals', 'BlockManager')
})
当我试图读取由 pandas 的旧版本保存的 pickle 文件时,它产生了一个 ImportError
。
ImportError: No module named 'pandas.core.internals.managers'; 'pandas.core.internals' is not a package
Whosebug 上没有命中,所以我想分享我针对这个特定问题的解决方案。
由于对以前保存的泡菜文件进行了编码,导致出现此错误。如果您将 pandas 更新为新修订的版本,则会产生此导入错误。
我有同样的问题,但对我来说,它似乎来自 pickle 包/与 pandas 包的交互。
我有 Pandas 版本 0.23.4。
我使用 pandas.Dataframe.to_pickle
、python 3.6.6 和 Pandas 版本 0.23.4 保存了一些 pickle 文件。
然后我升级到 python 3.7.2(Pandas 版本 0.23.4),并且可以使用 pandas.Dataframe.read_pickle
读取那些 pickle 文件。
接下来,我将 pandas 升级到 pandas 0.24.1,它对我有用。我可以再次阅读那些文件。
我在使用 pandas 版本 0.23.4
时遇到了同样的错误。
我已经通过以下方式明确安装了 pandas 0.24.1
版本:
pip3 install pandas==0.24.1
这解决了我的问题(Python 我使用的版本是 3.5)
conda update pandas
如果你使用 conda 包管理器。
更新 pandas 是大多数情况下的最佳解决方案。但是,如果您在更新 pandas 版本时遇到限制,并且需要使用在更高版本中生成和腌制的 pandas 个对象,则可以添加 class 位置图,如下所示。
from pandas.compat.pickle_compat import _class_locations_map
_class_locations_map.update({
('pandas.core.internals.managers', 'BlockManager'): ('pandas.core.internals', 'BlockManager')
})