mkvirtualenv не является внутренней или внешней командой: как исправить ошибку в Windows

Команда mkvirtualenv не входит в стандартную поставку Python — она появляется только после установки пакета virtualenvwrapper-win (на Windows) или virtualenvwrapper (на Linux/macOS). Поэтому сообщение «mkvirtualenv не является внутренней или внешней командой, исполняемой программой или пакетным файлом» почти всегда означает одно из двух: либо пакет не установлен, либо командная строка не видит установленные скрипты из-за проблем с переменной PATH.

Разберём диагностику по шагам: сначала проверим, установлен ли пакет, затем — доступен ли интерпретатор Python из консоли, и только потом перейдём к настройке переменных окружения. Такой порядок исключает лишние действия и позволяет быстро найти реальную причину.

Что означает эта ошибка

Когда вы вводите команду в cmd.exe или PowerShell, оболочка ищет исполняемый файл с таким именем во всех каталогах, перечисленных в переменной среды PATH. Если файл не найден, Windows выводит именно это сообщение. Важно понимать: mkvirtualenv — это не встроенная команда Windows и не часть самого Python, а обёртка из стороннего пакета.

Типичные причины ошибки:

  • 🔧 Пакет virtualenvwrapper-win просто не установлен в текущем интерпретаторе Python.
  • 🐍 Установлено несколько версий Python, и пакет поставлен в одну, а консоль использует другую.
  • 📁 Каталог Scripts с исполняемыми файлами пакетов не добавлен в переменную PATH.
  • 🔄 Терминал открыт до установки пакета и не обновил переменные окружения.
  • 👤 Пакет установлен для другого пользователя системы или внутри другого виртуального окружения.

Шаг 1. Проверка Python и pip

Прежде чем что-либо переустанавливать, убедитесь, что сам Python корректно доступен из командной строки. Откройте новое окно cmd и выполните:

python --version

pip --version

Если обе команды выводят версии — интерпретатор и менеджер пакетов на месте. Если python тоже «не является командой», проблема глубже: Python либо не установлен, либо его каталог не прописан в PATH. В этом случае при установке Python с официального установщика отметьте галочку Add Python to PATH — это решает большинство подобных ситуаций сразу.

Обратите внимание на путь, который покажет команда where python. Если в системе стоит несколько версий Python, вы увидите несколько строк — запомните, какая из них идёт первой, именно её будет использовать консоль.

Шаг 2. Установка virtualenvwrapper-win

На Windows пакет называется именно virtualenvwrapper-win — это порт оригинального virtualenvwrapper, который рассчитан на Unix-оболочки. Установка выполняется одной командой:

pip install virtualenvwrapper-win

После завершения установки обязательно закройте и заново откройте окно командной строки — уже открытая консоль не узнает о новых командах, потому что переменные окружения считываются при запуске оболочки. Затем проверьте результат:

mkvirtualenv test_env

Если окружение test_env создалось и активировалось автоматически — проблема решена. Удалить тестовое окружение можно командой rmvirtualenv test_env.

☑️ Проверка перед установкой

Выполнено: 0 / 4

Шаг 3. Настройка переменной WORKON_HOME

Пакет virtualenvwrapper-win хранит все созданные окружения в каталоге, заданном переменной среды WORKON_HOME. Если переменная не задана, обычно используется каталог по умолчанию внутри пользовательского профиля, однако явное указание пути избавляет от путаницы, особенно если на машине работает несколько пользователей или несколько версий Python.

Задать переменную можно через графический интерфейс: Параметры → Система → О системе → Дополнительные параметры системы → Переменные среды. Создайте пользовательскую переменную WORKON_HOME со значением, например, C:\Envs или другим удобным путём. Альтернатива — команда в консоли (действует постоянно для текущего пользователя):

setx WORKON_HOME "C:\Envs"
⚠️ Внимание: команда setx применяется только к новым окнам терминала. В уже открытой консоли переменная не появится — закройте её и откройте заново, иначе покажется, что настройка «не сработала».

Шаг 4. Проверка PATH и конфликтов версий Python

Если пакет установлен, а команда всё равно не находится, проверьте, куда именно pip поставил скрипты. Выполните:

pip show virtualenvwrapper-win

В выводе будет строка Location — путь к каталогу пакета. Исполняемые файлы команд обычно лежат в соседнем каталоге Scripts той же установки Python. Этот каталог должен присутствовать в PATH. Проверить текущее значение можно командой echo %PATH% в cmd.

Частая ситуация: пакет ставится через pip одной версии Python, а консоль по умолчанию запускает другую. Симптом — pip show находит пакет, но mkvirtualenv не работает. Решение — ставить пакет через явный вызов нужного интерпретатора:

py -m pip install virtualenvwrapper-win
📊 На каком шаге возникла проблема у вас?
Пакет не был установлен
PATH не содержит каталог Scripts
Конфликт нескольких версий Python
Переменная WORKON_HOME не была задана

Сравнение способов создания виртуальных окружений

Если настроить virtualenvwrapper-win не удаётся или он не нужен, у Python есть встроенные альтернативы. Они решают ту же задачу — изоляцию зависимостей проекта.

ИнструментКоманда созданияОсобенность
venv (встроенный)python -m venv myenvНе требует установки, работает «из коробки»
virtualenvvirtualenv myenvСтавится через pip, поддерживает старые версии Python
virtualenvwrapper-winmkvirtualenv myenvЕдиный каталог окружений, удобное переключение workon
condaconda create -n myenvТребует дистрибутив Anaconda/Miniconda

Команда python -m venv myenv — самый надёжный вариант для проверки: если даже она не работает, проблема в установке самого Python, а не в обёртках. Активируется такое окружение скриптом myenv\Scripts\activate.bat в cmd.

Почему на Linux и macOS пакет называется иначе

Оригинальный virtualenvwrapper написан на bash и работает только в Unix-оболочках — там ставится пакет virtualenvwrapper, а его команды подключаются через source в файле конфигурации shell. Для Windows создан отдельный порт virtualenvwrapper-win с bat-скриптами, поэтому инструкции с Linux-форумов напрямую не подходят: pip install virtualenvwrapper на Windows не даст рабочую команду mkvirtualenv.

Типичные ошибки при настройке

Даже после успешной установки пользователи сталкиваются с побочными проблемами. Вот что стоит проверить в первую очередь.

  • PowerShell вместо cmd. Обёртка virtualenvwrapper-win ориентирована на cmd; в PowerShell часть команд может вести себя иначе. Если что-то не работает — проверьте в классическом cmd.exe.
  • 🔒 Политика выполнения скриптов. При активации окружений в PowerShell может мешать политика ExecutionPolicy; это отдельная тема, настройку стоит выполнять осознанно, сверяясь с документацией Microsoft.
  • 🧩 Установка в активное окружение. Если pip install выполнен внутри уже активированного venv, пакет попадёт туда, а не в глобальный Python — глобально команда не появится.
  • 📝 Опечатка в имени. Команда пишется слитно: mkvirtualenv, без пробелов и дефисов.
⚠️ Внимание: не редактируйте системную переменную PATH вручную без резервной копии текущего значения. Сохраните старое содержимое в текстовый файл — случайное удаление чужих путей ломает работу других программ, и восстановить список по памяти бывает сложно.

Часто задаваемые вопросы

Почему mkvirtualenv работал вчера, а сегодня нет?

Вероятные причины: обновление Python, которое изменило пути; открытие другого терминала (например, PowerShell вместо cmd); установка новой версии Python, которая встала первой в PATH. Проверьте where python и pip show virtualenvwrapper-win.

Можно ли обойтись без virtualenvwrapper-win?

Да. Встроенный модуль python -m venv имя_окружения полностью покрывает базовые задачи изоляции зависимостей. Обёртка добавляет лишь удобство: единый каталог окружений и быстрое переключение командой workon.

Куда mkvirtualenv сохраняет созданные окружения?

В каталог, указанный в переменной среды WORKON_HOME. Если переменная не задана, используется каталог по умолчанию в профиле пользователя. Посмотреть список существующих окружений можно командой workon без аргументов.

Поможет ли переустановка Python?

Только если проблема в самой установке интерпретатора — например, Python не прописан в PATH. Если же пакет просто не установлен или терминал не перезапущен, переустановка ничего не изменит. Начинайте с диагностики, описанной выше.

Работает ли mkvirtualenv в PowerShell и Windows Terminal?

Базовые команды virtualenvwrapper-win рассчитаны на cmd.exe. В PowerShell поведение может отличаться, особенно активация окружений из-за политики выполнения скриптов. При проблемах проверьте работу в классической командной строке — так вы отделите ошибку пакета от особенностей оболочки.