Конфликт зависимостей между pandas и openpyxl не проявлялся при попытке установить пакеты

Я работаю над службой Python (работающей с Python 3.10), где я устанавливаю все зависимости, используя pip install -r requirements.txt. Обычно это вызывает следующую ошибку, если между файлами существует конфликт зависимостей.

Например, если я использую эти пакеты, python-datetutil (2.8.1), botocore (1.16.2) и pandas (2.0.0), возникает следующая ошибка.

ERROR: Cannot install -r requirements.txt (line 3), pandas==2.0.0 and python-dateutil==2.8.1 because these package versions have conflicting dependencies.
The conflict is caused by:
The user requested python-dateutil==2.8.1
botocore 1.16.2 depends on python-dateutil<3.0.0 and >=2.1
pandas 2.0.0 depends on python-dateutil>=2.8.2
To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

Однако он не выдает никаких ошибок, если есть проблема с поддержкой пакетов. Например, если я использую пакет openpyxl ( 3.0.6 ) и pandas ( 2.0.0 ), часть кода, где используется openpyxl, выдаст следующую ошибку.

Pandas require version '3.0.7' or newer of 'openpyxl' (version '3.0.6' is currently installed).

Но это мы получаем только тогда, когда запускаем эту часть кода.

Почему эта ошибка не отображается при установке пакета? Есть ли другая команда, которую можно использовать для выявления всех таких проблем?

Openpyxl не имеет этой зависимости

Charlie Clark 20.04.2023 14:59
0
1
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Почему эта ошибка не отображается при установке пакета?

Потому что ваш файл requirements.txt содержит только pandas==2.0.0, а openpyxl является необязательной зависимостью в группе excel.

Проверьте pandas/pyproject.toml:

excel = ['odfpy>=1.4.1', 'openpyxl>=3.0.7', 'pyxlsb>=1.0.8', 'xlrd>=2.0.1', 'xlsxwriter>=1.4.3']

Если вы измените свой requirements.txt следующим образом:

openpyxl==3.0.6
pandas[excel]==2.0.0

Команда pip install -r requirements.txt не будет выполнена:

ERROR: Cannot install openpyxl==3.0.6 and pandas[excel]==2.0.0 because these package versions have conflicting dependencies.

The conflict is caused by:
    The user requested openpyxl==3.0.6
    pandas[excel] 2.0.0 depends on openpyxl>=3.0.7; extra == "excel"

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

Решение: удалите openpyxl из requirements.txt и позвольте pip управлять правильной версией.

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