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

Solution 1:

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:

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:

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:

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')
})