Сообщение «не является внутренней или внешней командой» значит, что Windows не нашла программу с таким именем. «Внутренняя команда» — встроенная в саму командную строку, как dir или cd, «внешняя» — отдельная программа на диске. Командная строка ищет её в текущей папке и в каталогах из переменной PATH, и если нигде нет — пишет эту ошибку. PowerShell сообщает о том же своими словами: «не распознано как имя командлета».
Причин всего три: программа не установлена, вместо неё срабатывает заглушка Microsoft Store или программа установлена, но её папки нет в PATH. Ниже — как понять, какая из них твоя, и исправить. Вывод снят на Windows 11 24H2 с русским интерфейсом.
Где Windows ищет pip
Как выглядит ошибка
В командной строке (cmd) имя программы стоит в кавычках, а сообщение переносится на вторую строку:
pip --version
git --version
"pip" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"git" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
В PowerShell и в «Терминале» Windows, где по умолчанию открывается PowerShell, текст другой:
Имя "pip" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку.
В окне PowerShell перед этим сообщением стоят имя команды и двоеточие, а ниже — служебные строки с CommandNotFoundException. Смысл у обоих сообщений один: программы с таким именем не нашлось.
Где Windows ищет программы: PATH и where
Список каталогов, где ищется программа, хранится в переменной PATH. Команда path без аргументов его печатает:
path
PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Users\student\AppData\Local\Microsoft\WindowsApps;
Это PATH свежей Windows 11: ни Python, ни Git, ни Node.js в нём нет. Проверить, видит ли система конкретную программу и где она лежит, помогает where:
where pip
where python
ИНФОРМАЦИЯ: не удается найти файлы по заданным шаблонам.
C:\Users\student\AppData\Local\Microsoft\WindowsApps\python.exe
pip не найден нигде. А python найден в папке WindowsApps, но это не Python — о нём следующий раздел, после короткого про неустановленные программы.
Причина 1: программа не установлена
Git, Node.js и Python в Windows по умолчанию не входят. Если where ничего не нашёл, программу нужно поставить:
- Git — установщик Git для Windows с git-scm.com;
- npm — идёт вместе с Node.js, установщик на nodejs.org;
- Python и pip — как поставить Python на Windows через Python install manager, разобрано в статье про установку Python.
После установки открой новое окно командной строки или PowerShell: уже открытое окно продолжает жить со старым PATH. В VS Code перезапусти сам редактор — встроенный терминал получает PATH от него.
Причина 2: python открывает Microsoft Store
На свежей Windows 11 команда python не падает с ошибкой «не является…», а отвечает так:
python --version
Python was not found; run without arguments to install from the Microsoft Store, or disable this shortcut from Settings > Manage App Execution Aliases.
Сообщение даже в русской Windows приходит по-английски. Это заглушка: python.exe в папке WindowsApps, которую показал where, ведёт в Microsoft Store. Поставь Python (см. статью про установку), а если он уже стоит, но запускается заглушка, найди в меню «Пуск» «Управление псевдонимами выполнения приложений» и отключи псевдонимы python.exe и python3.exe от «Установщика приложений».
Причина 3: программа установлена, но её папки нет в PATH
Самый частый случай с pip: Python стоит, а папка, где лежит pip.exe, в PATH не попала — например, при установке не отметили «Add python.exe to PATH». Проверим механизм на маленьком примере: файл hello.bat лежит в C:\tools, а этой папки в PATH нет:
hello
set "PATH=%PATH%;C:\tools"
hello
"hello" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
hello from C:\tools
set дописал C:\tools в конец PATH, и программа нашлась. Но так PATH меняется только в текущем окне. Чтобы изменение сохранилось:
- В меню «Пуск» найди «Изменение системных переменных среды».
- Нажми «Переменные среды».
- В верхнем списке, переменных пользователя, выбери
Path→ «Изменить» → «Создать» и вставь путь к папке с программой. - Нажми «ОК» во всех окнах и открой новое окно командной строки.
Команду setx PATH …, которую часто советуют, лучше не использовать: по документации Microsoft она обрезает значение длиннее 1024 символов, и длинный PATH можно испортить.
Для pip: python -m pip
С pip есть способ обойтись без PATH вовсе: запускать его через Python. Так советует документация Python:
python -m pip install requests
py -m pip install requests
Первая форма работает, если находится python, вторая — если стоит запускатель py, который ставится вместе с Python на Windows. Заодно пакет гарантированно попадёт в тот Python, которым ты потом запустишь программу. Если после установки import всё равно не находит пакет, разбор в статье про ModuleNotFoundError. А для проекта пакеты лучше ставить в виртуальное окружение.
Частые вопросы
Почему в PowerShell пишет «не распознано как имя командлета»
Это то же самое, что «не является внутренней или внешней командой» в cmd: программа не найдена. PowerShell ищет её в PATH так же, но в отличие от cmd не запускает программы из текущей папки без явного пути. Файл script.bat в текущей папке там запускают как .\script.bat. А если PowerShell нашёл файл .ps1, но пишет «выполнение сценариев отключено в этой системе», разбор — здесь.
Это то же, что command not found в Linux
Да. В Linux и macOS та же ошибка звучит как command not found, а причины — те же три. Разбор с примерами — в статье про command not found.
Можно ли обойтись без установки Python
Да, если нужно просто запустить код. В песочнице Python он выполняется прямо в браузере: без установки, PATH и прав администратора — подходит и для школьного или рабочего компьютера.