Когда я попытался прочитать файл рассола, сохраненный предыдущей версией pandas, он выдал ImportError.
ImportError: No module named 'pandas.core.internals.managers'; 'pandas.core.internals' is not a package
В stackoverflow не было попадания, поэтому я хотел бы поделиться своим решением для этой конкретной проблемы.






Эта ошибка возникает из-за кодирования ранее сохраненного файла рассола. Если вы обновили pandas до новой исправленной версии, это приведет к этой ошибке импорта.
Означает ли это серьезно, что нет возможности открыть файлы рассола, сгенерированные с помощью pandas 0.23, в pandas 0.24, а также нет способа конвертировать между двумя форматами?
@LorenzWalthert На самом деле есть черный ход. Звучит глупо, но это действительно работает. Откройте файл pickle с помощью pandas 0.23 и сохраните его в другом формате, например json. Затем откройте json файл с помощью pandas 0.24 и сохраните pickle отформатированный файл.
@Fatih1923 спасибо. Да, это то, что я думал, должно быть стратегией последнего средства.
Спасибо, я обновил Pandas: pip install --upgrade pandas .. и проблема была решена.
Что касается меня, я использую одну и ту же среду (поэтому версии Python и Pandas одинаковы), но я все еще получаю эту ошибку.
У меня была такая же проблема, но мне казалось, что это связано с пакетом рассола/взаимодействием с пакетом 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.
Затем я обновил pandas до pandas 0.24.1, и это сработало. Я могу снова прочитать эти файлы.
Большое спасибо, действительно, обновление с 0.23 до 0.24 помогает!
Если у вас есть эта проблема в блокноте Jupyter, как и у меня: вам может потребоваться перезагрузить ноутбук, чтобы новая установка pandas заработала.
Я столкнулся с той же ошибкой, когда использовал версию для панд 0.23.4.
Я установил версию pandas 0.24.1 явно:
pip3 install pandas==0.24.1
Это решило мою проблему (версия Python, которую я использовал, была 3.5)
conda update pandas
Если вы используете диспетчер пакетов conda.
Обновление pandas было бы лучшим решением для большинства случаев. Однако, если у вас есть ограничения на обновление вашей версии pandas, и вам нужно использовать объекты pandas, созданные и маринованные в более высокой версии, вы можете добавить карту местоположения класса, как показано ниже.
from pandas.compat.pickle_compat import _class_locations_map
_class_locations_map.update({
('pandas.core.internals.managers', 'BlockManager'): ('pandas.core.internals', 'BlockManager')
})
У меня сработало, когда кто-то создал рассол из pandas 0.25, а я застрял с 0.20.3
Обновите панд, запустив
python3 -m pip install --upgrade pandas.