#Что происходит и когда возникает ошибка
Если pip install сообщает ResolutionImpossible или конфликт зависимостей, две библиотеки требуют несовместимые диапазоны версии общей зависимости. Отключение разрешения зависимостей обычно лишь переносит ошибку на запуск.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Несовместимые закреплённые версииПересечение допустимых версий пусто. | Вывод содержит depends on X<... и X>=... | Изменить совместимые версии верхнего уровня. |
| Старые прямые зависимостиУстаревшие ограничения мешают подобрать набор. | В requirements.txt закреплено множество прежних выпусков | Постепенно обновить верхнеуровневые требования на тестовой копии. |
| Смешаны источники пакетовПакеты одной версии могут иметь разные зависимости и происхождение. | Указаны частный и публичный индексы | Проверить безопасные адреса репозиториев и целостность пакетов. |
#Подробная диагностика и исправление
- Найдите конкретную пару конфликтующих требованийОткройте текст ошибки до строк
The conflict is caused by:. Выпишите имена пакетов, указанные диапазоны и текущий файлrequirements.txt. Например, один пакет может требоватьcommon<2, другойcommon>=2; такая пара не может быть установлена одновременно.
- Сохраните состояние исходного окруженияВ работающем старом окружении выполните
pip freezeи сохраните результат отдельно от существующего requirements.txt. Название файла выберитеbefore-resolution.txt. Эта копия понадобится для отката; не редактируйте исходные закреплённые версии вслепую. - Дополнительная команда по темеLinux · Терминал (Bash)КомандаТерминал в корне проекта; только чтение и создание локального файла с возможными приватными именами пакетов.
python -m pip freeze > before-resolution.txt
- Создайте чистое тестовое окружениеИз корня проекта выполните
python -m venv .venv-resolveи активируйте его. Не устанавливайте конфликтующие пакеты в рабочую среду для диагностики — иначе изменятся работающие зависимости.Linux · Терминал (Bash)КомандаWindows/Linux/macOS, обычный пользователь, в отдельном каталоге проекта.python -m venv .venv-resolve
- Просмотрите прямые ограниченияОткройте
requirements.txtв редакторе, найдите пакеты из ошибки. Сверьте их требования в метаданных выпуска. Сначала измените только те ограничения, для которых есть совместимые поддерживаемые версии; при отсутствии решения не используйте--no-deps.
- Проверьте новый набор без установкиПосле активации тестового окружения выполните dry-run. Если pip пишет
Would install ..., версии могут быть подобраны, но совместимость API пока не доказана. Если сноваResolutionImpossible, разберите новую пару ограничений. Если установленный pip не знает--dry-run, обновите только тестовую среду или используйте попытку установки в ней. - Дополнительная команда по темеLinux · Терминал (Bash)КомандаТолько в чистом тестовом окружении и при поддержке --dry-run; требуется доступ к репозиторию.
python -m pip install --dry-run -r requirements.txt
- Проверьте реальные функции и закрепите рабочие версииУстановите проверенный набор в тестовом окружении, выполните
python -m pip checkи минимальные тесты проекта. Когда всё успешно, зафиксируйте совместимый набор и повторите установку в новом окружении. При регрессии верните старые ограничения и используйте сохранённый before-resolution.txt.
#Проверка результата и действия при неуспехе
Новый набор устанавливается, pip check не находит нарушенных зависимостей и прикладные тесты проходят. Если тесты не прошли, конфликт версий устранён лишь частично.
Если исправление не помогло, вернитесь к точному сообщению об ошибке, сохраните версию Python, адрес целевого окружения и очищенный от секретов журнал; выясните, на каком шаге результат отличается от ожидаемого. Не изменяйте глобальный Python ради устранения сбоя проекта.