ImportError: нет модуля с именем «pandas.core.internals.managers»; «pandas.core.internals» не является пакетом

Когда я попытался прочитать файл рассола, сохраненный предыдущей версией pandas, он выдал ImportError.

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

В stackoverflow не было попадания, поэтому я хотел бы поделиться своим решением для этой конкретной проблемы.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
65
0
60 260
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Эта ошибка возникает из-за кодирования ранее сохраненного файла рассола. Если вы обновили pandas до новой исправленной версии, это приведет к этой ошибке импорта.

Обновите панд, запустив python3 -m pip install --upgrade pandas.

cjohnson318 20.02.2019 23:49

Означает ли это серьезно, что нет возможности открыть файлы рассола, сгенерированные с помощью pandas 0.23, в pandas 0.24, а также нет способа конвертировать между двумя форматами?

Lorenz Walthert 16.04.2019 15:03

@LorenzWalthert На самом деле есть черный ход. Звучит глупо, но это действительно работает. Откройте файл pickle с помощью pandas 0.23 и сохраните его в другом формате, например json. Затем откройте json файл с помощью pandas 0.24 и сохраните pickle отформатированный файл.

Fatih1923 16.04.2019 16:15

@Fatih1923 спасибо. Да, это то, что я думал, должно быть стратегией последнего средства.

Lorenz Walthert 16.04.2019 17:56

Спасибо, я обновил Pandas: pip install --upgrade pandas .. и проблема была решена.

Minions 02.05.2019 12:12

Что касается меня, я использую одну и ту же среду (поэтому версии Python и Pandas одинаковы), но я все еще получаю эту ошибку.

zoekdestep 24.12.2019 15:48

У меня была такая же проблема, но мне казалось, что это связано с пакетом рассола/взаимодействием с пакетом 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 помогает!

Learning is a mess 21.02.2019 14:09

Если у вас есть эта проблема в блокноте Jupyter, как и у меня: вам может потребоваться перезагрузить ноутбук, чтобы новая установка pandas заработала.

Sander Vanden Hautte 27.03.2019 22:11

Я столкнулся с той же ошибкой, когда использовал версию для панд 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

mrbTT 07.06.2021 16:13

Другие вопросы по теме