Изолированные окружения Python содержат отдельные наборы зависимостей для разных проектов
Программирование

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

Создаём отдельное окружение проекта через venv, проверяем выбранный интерпретатор, добавляем .venv в Git и учимся пересоздавать окружение.

Содержание

Два проекта могут требовать разные версии одной библиотеки. Если устанавливать всё в общий Python, обновление ради нового скрипта способно сломать старый. Виртуальное окружение отделяет пакеты проекта от системной установки и от соседних проектов.

Модуль venv входит в стандартную библиотеку Python. Он создаёт каталог с отдельным исполняемым файлом Python и местом для устанавливаемых пакетов. Исходный код при этом остаётся рядом, но не внутри окружения.

Создайте окружение в каталоге проекта

Откройте терминал в каталоге учебного проекта server-report из урока о модулях. Команда ниже создаёт подкаталог .venv; существующие исходные файлы она не меняет.

В Linux и macOS выполните:

python3 -m venv .venv

В Windows PowerShell или командной строке используйте установленный Python Launcher:

py -m venv .venv

Ключ -m просит Python запустить библиотечный модуль venv, а .venv задаёт каталог назначения. Точка в начале имени лишь делает каталог скрытым в некоторых файловых менеджерах. После команды внутри появятся конфигурация, интерпретатор и служебные каталоги.

Если модуль venv недоступен в Linux, не загружайте случайный установщик от имени администратора. У некоторых дистрибутивов поддержка окружений поставляется отдельным системным пакетом; найдите пакет для своей версии Python в документации дистрибутива.

Активация действует только в текущем терминале

Активация меняет переменную PATH, по которой оболочка ищет команды. Она не включает фоновую службу и не меняет сам проект.

В Bash или Zsh выполните:

source .venv/bin/activate

В PowerShell активируйте сценарий из каталога Scripts. Изменение затронет только текущее окно терминала:

.\.venv\Scripts\Activate.ps1

После успешной активации многие оболочки добавляют (.venv) в начало приглашения. Это только подсказка, поэтому полагаться на неё недостаточно. В новом окне терминала окружение придётся активировать снова.

Если PowerShell запрещает запуск сценария политикой выполнения, не ослабляйте системную политику вслепую. Можно продолжить без активации, указывая полный путь к интерпретатору окружения.

Проверьте фактический путь Python

Следующая команда ничего не устанавливает. Она выводит исполняемый файл, который выполняет код:

python -c "import sys; print(sys.executable)"

В Linux и macOS путь должен оканчиваться примерно на server-report/.venv/bin/python, в Windows — на server-report\.venv\Scripts\python.exe. Если показан системный каталог, окружение не активировано или команда python переопределена оболочкой.

Без активации ту же проверку можно выполнить явно. Для Linux и macOS путь выглядит так:

.venv/bin/python -c "import sys; print(sys.executable)"

Для Windows используйте:

.\.venv\Scripts\python.exe -c "import sys; print(sys.executable)"

Явный путь особенно полезен в планировщике и сценарии автоматизации: результат не зависит от того, активировал ли кто-то окружение перед запуском.

Не сохраняйте .venv в репозитории

Файлы окружения содержат пути и исполняемые файлы конкретной системы. Их не переносят между компьютерами и не используют как резервную копию. Добавьте в .gitignore проекта одну строку:

.venv/

Этот файл сообщает Git не отслеживать каталог окружения. Уже добавленные в индекс файлы правило само не удалит; сначала убедитесь, что в .venv нет исходного кода, и только затем уберите каталог из индекса Git отдельно.

Нужные внешние пакеты записываются в текстовый файл зависимостей. Его создадим в следующем уроке о pip.

Окружение должно легко пересоздаваться

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

Завершить активированную сессию можно командой:

deactivate

Она возвращает прежний PATH текущему терминалу, но не удаляет файлы. Закрытие окна терминала даёт тот же результат.

Не путайте окружение с контейнером или виртуальной машиной. venv разделяет пакеты Python, но не изолирует сеть, пользователей, системные библиотеки и доступ к файлам. Скрипт внутри окружения имеет те же права, что и запустивший его пользователь.

Подробное устройство и ограничения описаны в официальной документации venv. Практика установки пакетов продолжится в статье «pip и зависимости».

Рекламное местоВаша компания здесьРазместить рекламу

Самопроверка

Проверьте, что материал усвоен

Ответьте на все вопросы. Результат сохранится только в этом браузере и будет учтён в статистике прочитанных материалов.

01Как проверить, что используется интерпретатор окружения?
02Что должно храниться в Git вместо .venv?
03Что делает активация venv?

Разбираем коротко

Частые вопросы

Нужно ли создавать venv для каждого проекта?

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

Нужно ли коммитить каталог .venv в Git?

Нет. Окружение зависит от системы и пути, занимает место и считается пересоздаваемым. В репозиторий помещают код и список зависимостей.

Обязательно ли активировать окружение?

Нет. Активация только меняет поиск команд в текущем терминале. Можно явно запускать .venv/bin/python в Linux и macOS или .venv\Scripts\python.exe в Windows.