ImportError:没有名为“ pandas.core.internals.managers”的模块; 'pandas.core.internals'不是一个包

时间:2019-02-13 08:24:27

标签: python pandas pickle

当我尝试读取由以前的熊猫版本保存的泡菜文件时,它产生了ImportError

  

ImportError:没有名为“ pandas.core.internals.managers”的模块;   'pandas.core.internals'不是一个包

stackoverflow没有受到影响,所以我想针对这个特殊问题分享我的解决方案。

5 个答案:

答案 0 :(得分:25)

此错误因先前保存的泡菜文件的编码而消失。如果您将熊猫更新为新修订的版本,则会产生此导入错误。

答案 1 :(得分:12)

使用熊猫0.23.4版时遇到相同的错误。

我通过以下方式明确安装了熊猫0.24.1版本:

pip3 install pandas==0.24.1

这解决了我的问题(我使用的Python版本是3.5)

答案 2 :(得分:4)

我遇到了同样的问题,但对我来说,这似乎来自于pickle包/与pandas包的交互。

我的Pandas版本为0.23.4。 我使用pandas.Dataframe.to_pickle,Python 3.6.6和Pandas 0.23.4版保存了一些腌制文件。 然后,我升级到python 3.7.2(Pandas版本0.23.4),并启用了使用pandas.Dataframe.read_pickle来读取这些pickle文件的功能。 接下来,我将熊猫升级到熊猫0.24.1,它对我有用。我可以再次读取这些文件。

答案 3 :(得分:2)

在大多数情况下,更新熊猫是最好的解决方案。但是,如果您在更新熊猫版本方面有限制,并且需要使用在更高版本中生产和腌制的熊猫对象,则可以添加如下所示的类位置图。

from pandas.compat.pickle_compat import _class_locations_map

_class_locations_map.update({
    ('pandas.core.internals.managers', 'BlockManager'): ('pandas.core.internals', 'BlockManager')
})

答案 4 :(得分:0)

withSonarQubeEnv('SonarQubeServer') { def sonarRunner = tool name: 'SonarQubeScanner', type: 'hudson.plugins.sonar.SonarRunnerInstallation' sh """ ${sonarRunner}/bin/sonar-scanner \ -Dsonar.projectKey=your_project_key \ -Dsonar.sources=. """ }

如果使用conda程序包管理器。