Глава 2 · Давайте установим Python!

Виртуальные окружения — зачем они нужны

Прежде чем вводить команду создания окружения — разберём проблему, которую оно решает. Без этого команда — просто ещё одна строчка для заучивания наизусть.

Прежде чем показывать команду для создания виртуального окружения, разберём, зачем оно вообще нужно — на конкретной проблеме, с которой рано или поздно сталкивается каждый.

Представьте такую ситуацию

Вы работаете над двумя проектами на одном компьютере:

Если бы существовал только один, общий на весь компьютер Python со своим единственным набором пакетов — установить сразу обе версии одной и той же библиотеки было бы невозможно. Установка новой версии для проекта Б автоматически сломала бы проект А.

Это не гипотетический сценарий
Ровно эта проблема — главная причина, по которой виртуальные окружения стали стандартом в мире Python. Без них любые два проекта на одном компьютере вынуждены делить одни и те же версии всех библиотек — а любое обновление одного проекта рискует тихо сломать другой.

Решение: своя копия окружения для каждого проекта

Виртуальное окружение (virtual environment, сокращённо venv) — это лёгкая, изолированная «копия» интерпретатора Python вместе с собственным, отдельным набором установленных пакетов, привязанная к одному конкретному проекту.

Один и тот жеPython накомпьютере.venv проекта Аrequests 2.25, только дляпроекта А.venv проекта Бrequests 2.32, только дляпроекта Б
Каждый проект получает свою изолированную копию — версии пакетов не конфликтуют

Технически это не полная копия самого интерпретатора (не тратится гигабайт места на каждый проект) — venv переиспользует основной установленный Python, но заводит для проекта отдельную, независимую папку с пакетами. Для вас как для разработчика разница неощутима: внутри активированного окружения пакеты, установленные для одного проекта, попросту не видны другому.

Аналогия
Виртуальное окружение — как отдельный, промаркированный ящик с инструментами для каждого проекта, а не одна общая полка на всех. Взяли молоток из ящика проекта А — проект Б об этом даже не узнает.

Не только про конфликты версий

У виртуальных окружений есть и другие практические плюсы:

В следующем разделе — команда для создания окружения и разбор того, что она реально создаёт на диске.