Вопрос или проблема
Я пытался воспроизвести блокнот клиента Python Elasticsearch Eland, доступный в документации Eland.
Вот первые строки кода для создания eland dataframe из моего локального индекса Elasticsearch под названием sensor_index
:
import eland as ed
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from elasticsearch import Elasticsearch
ed_sensors = ed.read_es(localhost,'sensor_index')
К сожалению, в строке 1 возникает следующая ошибка Import error
:
ImportError: cannot import name 'ABCIndexClass' from 'pandas.core.dtypes.generic' (/home/user/miniconda3/envs/my_env/lib/python3.9/site-packages/pandas/core/dtypes/generic.py)
Используется Pandas версии 1.3.1.
Что могло быть причиной этой ошибки?
Хорошо, в конце концов, я выяснил, что версия Eland 7.13.0b1 оказалась несовместимой с Pandas версии 1.3.1.
После понижения версии до Pandas 1.2.5 все заработало нормально.
.
Ответ или решение
Вопрос о проблеме воспроизведения демонстрационной тетради Eland связан с ошибкой импорта при использовании библиотеки Eland в сочетании с определенной версией Pandas. В вашем случае ошибка возникает в первой строке кода:
ImportError: cannot import name 'ABCIndexClass' from 'pandas.core.dtypes.generic'
Эта ошибка указывает на несовместимость между версией Pandas, которая у вас установлена (v.1.3.1), и версией библиотеки Eland (7.13.0b1), которую вы используете. Причина заключается в том, что Eland, вероятно, использует специфичные для Pandas компоненты, которые изменились или были удалены в более новых версиях Pandas.
Анализ проблемы
-
Версия Pandas: На данный момент вы используете Pandas v.1.3.1. Однако, как вы сами отметили, понижение версии Pandas до v.1.2.5 решает проблему. Это говорит о том, что структуры или классы, необходимые для правильной работы Eland, присутствовали в более ранних версиях Pandas, но отсутствуют в последующих.
-
Проблемы совместимости: Это распространённая проблема, когда разрабатываемые библиотеки не обновляются синхронно с основными зависимостями, на которых они базируются. Это приводит к сбоям в случаях, когда API этих зависимостей изменяется.
-
Решение проблемы:
- Понижение версии Pandas: Понижение версии Pandas до v.1.2.5, как вы это сделали, является адекватным решением в краткосрочной перспективе, чтобы обеспечить совместимость с Eland.
- Уведомление об изменениях: Поддерживайте осведомленность о версиях библиотек, которые обновляются, чтобы оперативно реагировать на подобные случаи, которые могут возникнуть в будущем.
- Обратная связь разработчикам: Вы можете также рассмотреть возможность сообщить о проблеме разработчикам Eland, чтобы они знали о несовместимостях и могли их учесть в будущих обновлениях.
-
Документация: Регулярно проверяйте документацию как для Pandas, так и для Eland, чтобы быть в курсе любых новых изменений или рекомендаций по совместимости.
Заключение
Несовместимости версий — частая проблема в сфере программирования, особенно когда дело касается быстро развивающихся open-source проектов. Решение данной проблемы через понижение версии библиотеки Pandas показывает необходимость периодической проверки совместимости и актуальности используемых библиотек. В данном случае это также является возможностью наладить коммуникацию с сообществом разработчиков, чтобы внести вклад в улучшение продукта.