Я работаю над службой 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)
.
Но это мы получаем только тогда, когда запускаем эту часть кода.
Почему эта ошибка не отображается при установке пакета? Есть ли другая команда, которую можно использовать для выявления всех таких проблем?
Почему эта ошибка не отображается при установке пакета?
Потому что ваш файл 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
управлять правильной версией.
Openpyxl не имеет этой зависимости