Первый проект на Python обычно живёт без всяких окружений: поставили пару библиотек «в систему» — и работает. Проблемы начинаются со второго-третьего проекта. Одному нужна старая версия библиотеки, другому новая, третий после обновления пакетов вдруг перестаёт запускаться. Решение, которое рекомендует сама документация Python, — виртуальное окружение (venv): у каждого проекта своя изолированная папка с пакетами. В статье «Как установить Python на Windows 11» мы коротко показали, как его создать. Здесь разбираем тему подробно: активация в разных терминалах, частые ошибки, requirements.txt, Git и VS Code.
- Что такое виртуальное окружение и зачем оно нужно
- Создаём окружение
- Активация в PowerShell и cmd
- Ошибка «выполнение сценариев отключено в этой системе»
- Можно ли без активации
- Устанавливаем пакеты через pip
- requirements.txt: список зависимостей проекта
- Venv и Git: что коммитить
- Venv в VS Code
- Частые ошибки
- Альтернативы: pipx и uv
- Краткий чек-лист
Что такое виртуальное окружение и зачем оно нужно
Виртуальное окружение — это папка внутри проекта (обычно её называют .venv), в которой лежат ссылка на интерпретатор Python и собственный набор установленных пакетов. Когда окружение активно, команды python и pip работают именно с ним, а не с «системным» Python.

Что это даёт:
- Нет конфликтов версий. Проект А может использовать Django 4.2, проект Б — Django 5, и они не мешают друг другу.
- Чистая система. Установленные для экспериментов пакеты не копятся в общем Python.
- Воспроизводимость. Список пакетов проекта легко сохранить в файл и повторить на другом компьютере или на сервере.
- Безопасные эксперименты. Сломали окружение — удалили папку и создали заново за минуту.
Модуль venv входит в стандартную библиотеку Python, ничего дополнительно ставить не нужно.
Создаём окружение
Откройте терминал (PowerShell или «Терминал» Windows), перейдите в папку проекта и выполните:
cd C:\Projects\parser py -m venv .venv
Здесь py — стандартная команда запуска Python в Windows (её мы настраивали в инструкции по установке), -m venv — запуск модуля venv, а .venv — имя папки окружения. Имя может быть любым, но .venv — распространённое соглашение: его узнают VS Code и многие инструменты, а точка в начале показывает, что это служебная папка.
Если на компьютере несколько версий Python, можно явно выбрать нужную: py -V:3.13 -m venv .venv или старый вариант синтаксиса py -3.13 -m venv .venv. Какие версии установлены, покажет py list (в новом Python Install Manager) или py -0 (в классическом лаунчере).
Активация в PowerShell и cmd
Команда активации зависит от терминала. По документации Python для Windows:
# PowerShell .venv\Scripts\Activate.ps1 # Командная строка (cmd.exe) .venv\Scripts\activate.bat
Признак того, что окружение активно, — (.venv) в начале строки терминала. Теперь проверьте, какой Python используется:
python -c "import sys; print(sys.prefix)"
В ответе должен быть путь к папке .venv вашего проекта. Выйти из окружения — команда deactivate.

Ошибка «выполнение сценариев отключено в этой системе»
Самая частая проблема в PowerShell: при активации появляется красный текст, что файл Activate.ps1 невозможно загрузить, так как выполнение сценариев отключено. Это срабатывает защита Windows — политика выполнения (Execution Policy), которая по умолчанию на клиентских версиях Windows запрещает запуск скриптов PowerShell.
Документация Python предлагает разрешить скрипты для текущего пользователя:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Что это значит: политика RemoteSigned разрешает запускать локальные скрипты (как Activate.ps1, созданный на вашем компьютере), а скрипты, скачанные из интернета, — только с цифровой подписью. Параметр -Scope CurrentUser меняет настройку только для вашей учётной записи, права администратора не нужны. Если вы работаете на компьютере организации, политика может быть задана администратором — тогда уточните у него, можно ли её менять.
Не хотите трогать политику? Можно пользоваться окружением без активации или работать в cmd, где активация через activate.bat этой проверки не требует.
Можно ли без активации
Да. Активация лишь меняет переменные окружения текущего окна терминала. Можно вызывать Python из окружения напрямую по пути:
.venv\Scripts\python.exe -m pip install requests .venv\Scripts\python.exe main.py
Так часто делают в скриптах автоматизации и в планировщике задач.
Устанавливаем пакеты через pip
При активном окружении пакеты ставятся только в него:
python -m pip install --upgrade pip python -m pip install requests python -m pip install "django>=5,<6"
Почему python -m pip, а не просто pip: так вы гарантированно вызываете pip того Python, который сейчас активен. Это избавляет от ситуаций «пакет установил, а он не находится». Ещё полезные команды:
python -m pip list— что установлено в окружении;python -m pip show requests— версия и зависимости пакета;python -m pip install --upgrade requests— обновить пакет;python -m pip uninstall requests— удалить.
requirements.txt: список зависимостей проекта
Чтобы проект можно было развернуть заново, список пакетов сохраняют в файл requirements.txt:
python -m pip freeze > requirements.txt
Команда записывает все установленные пакеты с точными версиями, например requests==2.32.3. На другом компьютере (или после пересоздания окружения) всё ставится одной командой:
py -m venv .venv .venv\Scripts\Activate.ps1 python -m pip install -r requirements.txt
Совет: pip freeze записывает и «косвенные» зависимости. Для небольших проектов это нормально и даже удобно — версии зафиксированы полностью. Некоторые разработчики предпочитают вести короткий список вручную (только то, что проект использует напрямую), а точные версии фиксировать отдельными инструментами — это уже вопрос вкуса и масштаба проекта.

Venv и Git: что коммитить
Документация Python прямо говорит: виртуальное окружение не хранят в системе контроля версий. Его считают «одноразовым»: оно содержит абсолютные пути к интерпретатору, поэтому его не копируют и не переносят в другую папку, а пересоздают на месте по requirements.txt.
- В Git: код проекта и
requirements.txt. - Не в Git: папка
.venv.
Начиная с Python 3.13 модуль venv сам кладёт в папку окружения файл .gitignore, поэтому Git её игнорирует автоматически. Для надёжности (и для старых версий Python) добавьте строку .venv/ в .gitignore в корне проекта. Если вы только знакомитесь с Git, начните с нашей статьи «Как работать с Git для начинающих».
Если вы переместили или переименовали папку проекта и окружение перестало работать — это ожидаемо. Удалите .venv и создайте заново, затем установите пакеты из requirements.txt.
Venv в VS Code
VS Code с расширением Python от Microsoft обычно сам находит папку .venv в открытом проекте. Чтобы выбрать окружение вручную:
- Нажмите Ctrl+Shift+P и выберите команду Python: Select Interpreter («Python: выбор интерпретатора»).
- Укажите интерпретатор с пометкой
.venv— путь вида.\.venv\Scripts\python.exe. - Откройте новый терминал (Ctrl+Shift+`) — в зависимости от настроек расширения окружение в нём активируется автоматически.
Другие полезные сочетания клавиш — в шпаргалке по VS Code для начинающих.
Частые ошибки
- ModuleNotFoundError после установки пакета. Пакет поставили в одно окружение, а скрипт запускаете другим Python. Проверьте, что в терминале есть
(.venv), а в VS Code выбран интерпретатор из.venv. Ставьте пакеты черезpython -m pip. - «Выполнение сценариев отключено». См. раздел про политику выполнения выше.
- Окружение сломалось после переноса папки или обновления Python. Удалите
.venvи создайте заново:py -m venv .venv, затемpython -m pip install -r requirements.txt. - Пакеты попали «в систему». Значит, окружение не было активно. Удалите лишнее из глобального Python (
py -m pip uninstall имя) и установите в проект заново. - Папку .venv положили в облачную папку (OneDrive и т. п.). Синхронизация тысяч мелких файлов замедляет работу и может портить окружение. Держите проекты в обычной локальной папке, например
C:\Projects.
Альтернативы: pipx и uv
Модуля venv и pip достаточно для большинства задач. Но есть инструменты, о которых полезно знать:
- pipx — для установки Python-программ, которые используются как отдельные утилиты командной строки (например, линтеры или форматтеры). Каждая такая программа получает своё изолированное окружение автоматически.
- uv — быстрый менеджер пакетов и окружений: создаёт окружения (
uv venv), ставит пакеты (uv pip install) и умеет управлять проектами целиком. Возможности и команды у него свои, поэтому пользуйтесь его документацией.
Начинать всё равно стоит со стандартных venv и pip: они есть в любой установке Python, и на них опираются почти все учебники.
Краткий чек-лист
- Для каждого проекта:
py -m venv .venvв папке проекта. - Активация:
.venv\Scripts\Activate.ps1(PowerShell) или.venv\Scripts\activate.bat(cmd); при ошибке —Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser. - Пакеты ставите через
python -m pip install ..., проверяете(.venv)в строке. - Зависимости — в
requirements.txt, папка.venv— в.gitignore. - В VS Code выбран интерпретатор из
.venv. - Сломалось окружение — удалите и пересоздайте.
Команды приведены по документации Python (docs.python.org, модуль venv) на октябрь 2026 года.
Фото на обложке: Marc Mueller, CC0, Wikimedia Commons








