ImportError: No module named 'pandas.core.internals.managers'; 'pandas.core.internals' is not a package

PythonPandasPickle

Python Problem Overview


When I tried to read a pickle file that saved by a former version of pandas, it yielded an ImportError.

> ImportError: No module named 'pandas.core.internals.managers'; > 'pandas.core.internals' is not a package

There was no hit on stackoverflow so i would like to share my solution for this particular problem.

Python Solutions


Solution 1 - Python

This error comes off due to encoding of formerly saved pickle file. If you updated pandas to newly amended version, it produces this import error.

Solution 2 - Python

I was facing the same error when I was using pandas version 0.23.4.

I have installed pandas 0.24.1 version explicitly by:

pip3 install pandas==0.24.1

This solved my problem(Python version I was using was 3.5)

Solution 3 - Python

I had the same problem, but for me, it seemed to come from the pickle package / interaction with the pandas package.

I had Pandas version 0.23.4. I saved some pickle files with pandas.Dataframe.to_pickle, with python 3.6.6 & Pandas version 0.23.4. Then I upgraded to python 3.7.2 (Pandas version 0.23.4), and was enabled to read thoses pickle files with pandas.Dataframe.read_pickle. Next, I upgraded pandas to pandas 0.24.1, and it worked for me. I can read those files again.

Solution 4 - Python

Updating pandas would be the best solution for most cases. However if you have limitations updating your pandas version, and you need to consume pandas objects produced and pickled in a higher version, you can add class location map as below.

from pandas.compat.pickle_compat import _class_locations_map

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

Solution 5 - Python

conda update pandas

If you use conda package manager.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFatih1923View Question on Stackoverflow
Solution 1 - PythonFatih1923View Answer on Stackoverflow
Solution 2 - PythonChandanView Answer on Stackoverflow
Solution 3 - PythonCharles dcView Answer on Stackoverflow
Solution 4 - PythonGengyu ShiView Answer on Stackoverflow
Solution 5 - PythonBstampeView Answer on Stackoverflow