Почему pip install не работает в cmd: три разных причины
Команда pip install в cmd отказывает по одной из трёх причин: Windows не находит сам pip, pip найден, но не может скачать пакет из сети, либо пакет скачан, но не ставится из-за прав, версии Python или конфликта зависимостей. Эти случаи выглядят похоже, но лечатся по-разному, поэтому сначала прочитайте текст ошибки до конца, а не только первую строку.
Быстрая диагностика, по порядку:
- Откройте cmd и введите python --version. Если версия не показалась, Python либо не установлен, либо не прописан в системных путях.
- Введите python -m pip --version. Если версия pip показалась, сам pip в порядке, и причина дальше: в сети или в пакете.
- Повторите установку с подробным выводом: python -m pip install имя_пакета -v. Последние строки вывода назовут настоящую причину.
Запись через python -m pip надёжнее короткой команды pip: она запускает pip ровно той версии Python, которую вы вызвали, и не зависит от того, прописан ли отдельный файл pip.exe в системе.
«pip не является внутренней или внешней командой»: как починить путь
Это сообщение значит, что cmd не нашёл файл pip.exe в переменной окружения PATH, то есть в списке папок, где Windows ищет программы по имени. Сам Python при этом может быть установлен и работать. Варианты действий:
- Проверьте, отвечает ли py -m pip --version. Команда py — это загрузчик, который ставится вместе с Python для Windows и лежит в системной папке независимо от PATH. Если она работает, используйте её для всех установок: py -m pip install имя_пакета.
- Если не отвечает ни python, ни py, установите Python заново с официального сайта и на первом экране установщика поставьте галочку «Add python.exe to PATH». Без неё установщик путь по умолчанию не прописывает.
- После любой правки PATH закройте cmd и откройте новое окно: уже открытая консоль обновлённый список папок не перечитывает.
Отдельный случай: при вводе python открывается Microsoft Store. Так ведут себя псевдонимы выполнения приложений в Windows 10 и 11, когда Python не найден. Отключите их в параметрах системы, раздел «Приложения», пункт «Псевдонимы выполнения приложений», либо установите Python из того же магазина, тогда pip появится вместе с ним.
pip найден, но install обрывается ошибкой соединения
Сообщения вида «Connection timed out», «Read timed out», «Could not fetch URL» или «Retrying» с обратным отсчётом значат, что pip дошёл до сети и не дождался ответа от хранилища пакетов. Через мобильный интернет это самая частая причина: сеть с ограничениями может открывать страницы в браузере, но обрывать длинные загрузки или отвечать с задержкой, которую pip по умолчанию считает обрывом.
Что сделать в cmd:
- Увеличьте время ожидания и число попыток: python -m pip install имя_пакета --timeout 120 --retries 10. По умолчанию pip ждёт ответа 15 секунд и повторяет запрос 5 раз, для нестабильной сети этого мало.
- Если ошибка упоминает SSL или сертификат, проверьте дату и время на компьютере: сбитые часы ломают проверку сертификатов, и pip отказывается качать. Заодно обновите сам pip, старые версии не знают новых корневых сертификатов.
- Если загрузка прерывается на большом пакете, ставьте его отдельно, а не списком из файла requirements: при обрыве pip откатывает всю операцию, и маленькие пакеты приходится качать заново.
- Если в выводе есть «No matching distribution found», сеть ни при чём: пакета под вашу версию Python или разрядность Windows в хранилище нет. Проверьте написание имени и список поддерживаемых версий на странице пакета.
При нестабильной связи надёжнее разделить загрузку и установку: сначала python -m pip download имя_пакета -d папка скачивает файлы с повторами, потом установка идёт уже с диска, без сети.
Пакет скачан, но не ставится: права, версия Python, устаревший pip
- «Permission denied» или «Access is denied». Python установлен в папку Program Files, куда обычный пользователь писать не может. Добавьте ключ --user, тогда пакет ляжет в ваш профиль, либо запустите cmd от имени администратора.
- «Requires Python >=3.x». Пакет требует более новую версию интерпретатора. Посмотрите py --list: если установлено несколько версий, вызывайте нужную явно, например py -3.12 -m pip install имя_пакета.
- Ошибка сборки с упоминанием Microsoft Visual C++. Для пакета нет готовой сборки под вашу версию Python, и pip пытается собрать его из исходников. Чаще помогает другая версия пакета или версия Python, под которую собранные файлы уже выложены.
- Предупреждение «You are using pip version…». Установку оно не ломает, но обновиться стоит: python -m pip install --upgrade pip. Если pip сломан и не запускается вовсе, восстановите его штатной командой python -m ensurepip --upgrade.
Что подготовить заранее, пока связь устойчивая
Если завтра предстоит работать через мобильную сеть с ограничениями, скачайте всё нужное сейчас, по домашнему или рабочему интернету:
- Соберите список пакетов в файл requirements.txt, по одному имени на строку, при необходимости с номером версии.
- Выполните python -m pip download -r requirements.txt -d wheels. В папку wheels лягут сами пакеты и все их зависимости.
- Скопируйте папку на ноутбук или флешку. Разрядность Windows и версия Python на целевой машине должны совпадать с теми, где шла загрузка.
- На месте ставьте без обращения к сети: python -m pip install --no-index --find-links wheels -r requirements.txt.
Этот же приём выручает при раздаче интернета с телефона, где трафик лимитирован по объёму: загрузка идёт один раз, а устанавливать пакет можно сколько угодно раз.
Типичные ошибки и чего делать не стоит
- Не вводите pip install в консоли самого Python, где приглашение выглядит как три угловые скобки. Там команда даст синтаксическую ошибку: pip вызывается из cmd, а не изнутри интерпретатора.
- Не повторяйте команды из непроверенных инструкций с ключом отключения проверки сертификатов: так вы разрешаете подмену скачиваемых файлов по дороге.
- Не копируйте pip.exe из другой папки вручную: он привязан к своей версии Python и в чужой не заработает.
- Не держите две установки Python с равным приоритетом в PATH: pip будет ставить пакеты в одну, а код запускаться из другой, и импорт упадёт с «No module named».