Ошибка «"pyinstaller" не является внутренней или внешней командой, исполняемой программой или пакетным файлом» появляется в командной строке Windows в тот момент, когда система не находит исполняемый файл pyinstaller.exe ни в текущей папке, ни в каталогах, перечисленных в переменной окружения PATH. Это не сбой самого PyInstaller, а сигнал о том, что путь к нему не зарегистрирован в системе или пакет не установлен в том окружении Python, которое вы используете.
Проблема возникает у начинающих и опытных разработчиков одинаково часто: причина почти всегда сводится к нескольким типовым сценариям — от неустановленного пакета до конфликта нескольких версий Python. Ниже разберём, как быстро продиагностировать ситуацию и устранить ошибку без переустановки всей системы.
Почему Windows выдаёт эту ошибку
Когда вы вводите команду в cmd или PowerShell, Windows последовательно ищет исполняемый файл в текущем каталоге и в папках из переменной PATH. Если файл pyinstaller.exe там отсутствует, система возвращает именно это сообщение. Возможных причин несколько, и определить конкретную — первый шаг к решению.
- 🔧 PyInstaller не установлен — пакет просто отсутствует в выбранном интерпретаторе Python.
- 📁 Папка Scripts не в PATH — пакет установлен, но каталог
PythonXX\Scriptsне добавлен в переменную окружения. - 🐍 Несколько версий Python — PyInstaller поставлен в одну версию, а команда
pythonвызывает другую. - 🧪 Виртуальное окружение не активировано — пакет установлен внутри venv, но вы работаете вне него.
- 🔒 Ошибка при установке — pip завершился с предупреждением, и скрипт не был создан.
Какая из причин ваша — покажет короткая диагностика, описанная в следующем разделе. Не спешите переустанавливать Python целиком: в большинстве ситуаций достаточно одной команды или правки PATH.
Диагностика: проверяем установку за пару минут
Откройте командную строку и выполните проверку наличия пакета в текущем интерпретаторе:
python -m pip show pyinstaller
Если команда выводит информацию о пакете (версию, расположение), значит PyInstaller установлен, и проблема именно в PATH. Если видите предупреждение вида «Package(s) not found» — пакет нужно установить. Обратите внимание: проверять нужно через python -m pip, а не просто pip, чтобы гарантировать привязку к конкретному интерпретатору.
Дополнительно проверьте, какой Python вообще отвечает на команды:
python --version
where python
Команда where python покажет все найденные интерпретаторы. Если их несколько — вы почти наверняка нашли корень проблемы: пакет ставился в одну версию, а вы рассчитываете на другую.
Способ 1: установка или переустановка PyInstaller
Если пакет отсутствует, установите его командой:
python -m pip install pyinstaller
Использование конструкции python -m pip вместо голого pip — ключевой момент: так pip гарантированно ставит пакет именно в тот интерпретатор, который вызывается командой python. После завершения установки проверьте результат повторным запуском python -m pip show pyinstaller.
⚠️ Внимание: если при установке pip вывел жёлтое предупреждение о том, что папка Scripts не находится в PATH, — запомните указанный в нём путь. Именно его нужно будет добавить в переменные окружения, иначе ошибка «не является внутренней или внешней командой» останется даже после успешной установки.
Если пакет установлен, но работает некорректно, помогает чистая переустановка:
python -m pip uninstall pyinstaller
python -m pip install pyinstaller
Способ 2: запуск через python -m pyinstaller
Самый быстрый обходной путь, не требующий правки PATH, — вызов PyInstaller как модуля Python:
python -m PyInstaller myscript.py
Этот вариант работает всегда, когда пакет установлен в текущий интерпретатор, потому что Python сам находит модуль внутри своего каталога site-packages, минуя поиск по PATH. Многие разработчики используют такую форму постоянно — она исключает любую неоднозначность с версиями.
Обратите внимание на регистр: при вызове через -m имя модуля пишется как PyInstaller. Все привычные аргументы (--onefile, --noconsole, --icon и другие) передаются точно так же, как при прямом вызове команды.
Способ 3: добавление папки Scripts в PATH
Чтобы команда pyinstaller работала напрямую, каталог Scripts вашего Python должен быть прописан в PATH. Путь обычно выглядит примерно как C:\Users\Имя\AppData\Local\Programs\Python\Python312\Scripts\ или C:\Users\Имя\AppData\Roaming\Python\Python312\Scripts\ — точное расположение зависит от способа установки Python, поэтому сверьтесь с реальной папкой на диске.
☑️ Добавление Scripts в PATH
После правки PATH обязательно закройте все открытые окна терминала и откройте новое — старые сеансы продолжают использовать прежние переменные окружения. Проверьте результат командой pyinstaller --version: если выводится номер версии, настройка завершена.
⚠️ Внимание: редактируйте только пользовательскую переменную Path, если не уверены в последствиях. Случайное удаление системных путей может нарушить работу других программ, поэтому перед изменением полезно скопировать текущее значение переменной в текстовый файл.
Конфликт версий Python и виртуальные окружения
На машинах разработчиков часто установлено несколько версий Python, и это классический источник путаницы. PyInstaller, установленный в Python 3.11, невидим для Python 3.12 и наоборот — у каждого интерпретатора собственный site-packages и собственная папка Scripts.
С виртуальными окружениями логика та же: если PyInstaller установлен внутри venv, команда доступна только при активированном окружении. Активация выполняется скриптом activate из папки окружения, после чего в начале строки терминала появляется имя окружения в скобках. Если скобок нет — окружение не активно, и пакеты из него недоступны.
| Ситуация | Признак | Решение |
|---|---|---|
| Пакет не установлен | pip show не находит пакет | Установить через python -m pip install pyinstaller |
| Scripts не в PATH | Пакет есть, команда не находится | Добавить папку Scripts в PATH или использовать python -m |
| Несколько версий Python | where python выводит несколько путей | Ставить пакет через нужный интерпретатор явно |
| Окружение не активно | Нет имени venv в строке терминала | Активировать окружение скриптом activate |
Как явно указать нужную версию Python при установке
Вместо общей команды python можно вызывать конкретный интерпретатор по полному пути, например: C:\Python312\python.exe -m pip install pyinstaller. Также в Windows доступен лаунчер py: команда py -3.12 -m pip install pyinstaller установит пакет строго в указанную версию, если она установлена в системе.
Типичные ошибки после «успешного» исправления
Иногда команда начинает работать, но сборка проекта всё равно не запускается. Проверьте, что вы находитесь в папке со своим скриптом или указываете к нему полный путь — PyInstaller ищет файл относительно текущего каталога. Ещё одна частая ситуация: терминал открыт от имени другого пользователя или с повышенными правами, где PATH отличается от вашего обычного сеанса.
Отдельно стоит упомянуть антивирусы: в редких случаях защитное ПО блокирует создание исполняемых файлов в папке Scripts при установке. Если pip сообщает об успехе, но файла pyinstaller.exe в каталоге нет, проверьте журнал антивируса и повторите установку.
Частые вопросы
Почему pip install pyinstaller прошёл успешно, а команда не работает?
Чаще всего папка Scripts не добавлена в PATH — об этом pip обычно предупреждает жёлтым текстом при установке. Либо используйте вызов python -m PyInstaller, либо добавьте путь к Scripts в переменные окружения и перезапустите терминал.
Чем отличается pyinstaller от python -m PyInstaller?
Функционально — ничем, запускается один и тот же модуль. Разница только в способе поиска: первая команда требует наличия исполняемого файла в PATH, вторая находит модуль через сам интерпретатор и работает независимо от настроек окружения.
Нужно ли переустанавливать Python, чтобы исправить ошибку?
Нет, переустановка Python требуется крайне редко. Ошибка решается установкой пакета в правильный интерпретатор, правкой PATH или запуском через python -m. Переустановка оправдана только при повреждении самого Python.
PyInstaller работает в cmd, но не работает в терминале VS Code — почему?
Редактор мог запомнить старые переменные окружения или использовать другой интерпретатор. Полностью перезапустите VS Code после правки PATH и проверьте, какой интерпретатор выбран в правом нижнем углу окна редактора.
Как проверить, что всё исправлено?
Откройте новое окно командной строки и выполните pyinstaller --version. Вывод номера версии без ошибок означает, что команда доступна глобально. Если сработал только вариант python -m PyInstaller --version, PATH по-прежнему требует настройки.