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