#Что происходит и когда возникает ошибка
pip install может отказаться ставить пакет, если метаданные проекта требуют другой Python (Requires-Python). Подмена ограничений обычно приводит к несовместимому коду, поэтому сначала проверяют версии Python и библиотеки.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Требуется более новый PythonПроект ограничил минимальную поддерживаемую версию. | В выводе есть requires Python >=... | Установить подходящий Python в отдельную среду. |
| Последние версии больше не поддерживают старый PythonДоступны только старые выпуски библиотеки. | pip пишет, что игнорирует версии с несовместимыми требованиями | Выбрать подтверждённый совместимый выпуск. |
| Путаются Python и pippip проверяет совместимость со своим интерпретатором. | Python в приложении другой, чем в команде установки | Уточнить интерпретатор через -m. |
#Подробная диагностика и исправление
- Сохраните полный текст про версииСкопируйте часть вывода
Ignored the following versions that require a different python versionилиPackage ... requires a different Python. Укажите точное имя библиотеки и запрошенную версию; подстрока>=3.10означает минимальную версию, а не совет установить «последний» Python.
- Выведите реальные версииВ терминале каталога проекта выполните команды и сравните
python -Vсpip ... (python X.Y). Если они отличаются, вызывайте установку только какpython -m pipв целевом окружении.Linux · Терминал (Bash)КомандаПодходит в активном окружении Linux/macOS/Windows; не требует администратора.python -Vpython -m pip --version
- Посмотрите кандидатов и ограниченияВ отдельной тестовой среде вызовите
python -m pip index versions ИМЯ_ПАКЕТА. Вывод показывает доступные версии, но не гарантирует совместимость каждого выпуска. Для точных ограничений изучите страницу пакета и Requires-Python в метаданных релизов.Linux · Терминал (Bash)КомандаДля последних версий pip; запрос к настроенному индексу по сети, без установки.python -m pip index versions ИМЯ_ПАКЕТА
- Выберите два безопасных путиЕсли приложение допускает новую версию Python, установите её рядом и создайте новое venv, не заменяя системную. Если Python обновить нельзя, закрепите выпуск пакета, который официально поддерживает вашу версию:
python -m pip install "ИМЯ_ПАКЕТА==X.Y.Z". Замените X.Y.Z на проверенный выпуск, не используйте случайное число.
- Предварительно оцените зависимостиДля поддерживаемого выпуска проверьте разрешение в тестовой среде через
--dry-run; pip должен показать список планируемых установок. Если конфликт зависимостей останется, найдите ограничивающие требования вrequirements.txtи разберите их, не игнорируйте их вслепую. - X.Y.Z — заменяемый примерLinux · Терминал (Bash)КомандаX.Y.Z — заменяемый пример. Dry-run доступен в современных версиях pip; нужен доступ к индексу.
python -m pip install --dry-run "ИМЯ_ПАКЕТА==X.Y.Z"
- Прогоните импорт и регрессионный тестВ созданном окружении установите выбранный совместимый выпуск, проверьте
pip checkи запустите приложение. Если модуль импортируется, но ломается API, проблема уже в несовместимости кода с выбранным выпуском, а не в pip.
#Проверка результата и действия при неуспехе
Пакет устанавливается без Requires-Python и приложение проходит хотя бы свой основной сценарий. Список установленных версий сохраните для воспроизводимости.
Если исправление не помогло, вернитесь к точному сообщению об ошибке, сохраните версию Python, адрес целевого окружения и очищенный от секретов журнал; выясните, на каком шаге результат отличается от ожидаемого. Не изменяйте глобальный Python ради устранения сбоя проекта.