Виртуальное окружение Python (venv) и pip: как создать и устанавливать пакеты

экран ноутбука с программным кодом крупным планом Программирование

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

Что такое виртуальное окружение и зачем оно нужно

Виртуальное окружение — это папка внутри проекта (обычно её называют .venv), в которой лежат ссылка на интерпретатор Python и собственный набор установленных пакетов. Когда окружение активно, команды python и pip работают именно с ним, а не с «системным» Python.

схема: у каждого проекта Python своё виртуальное окружение .venv с пакетами

Что это даёт:

  • Нет конфликтов версий. Проект А может использовать 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.

создание и активация venv в PowerShell, ошибка политики выполнения и её исправление

Ошибка «выполнение сценариев отключено в этой системе»

Самая частая проблема в 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: создать, активировать, установить, requirements.txt, Git, другой компьютер

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 в открытом проекте. Чтобы выбрать окружение вручную:

  1. Нажмите Ctrl+Shift+P и выберите команду Python: Select Interpreter («Python: выбор интерпретатора»).
  2. Укажите интерпретатор с пометкой .venv — путь вида .\.venv\Scripts\python.exe.
  3. Откройте новый терминал (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

Оцените статью
Компьютер для начинающих
Добавить комментарий