раздел 07

Виртуальные окружения

Звучит страшно, на деле - простая папка, в которую складываются библиотеки одного проекта. Дальше разберём, зачем она и как её завести.

Зачем это нужно

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

Виртуальное окружение решает это просто: у каждого проекта свой отдельный набор библиотек, который не мешает остальным. Поставили что-то в один проект - на другие это никак не влияет.

Что такое venv

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

Пока окружение "включено" (активировано), все команды pip install ставят пакеты только в эту папку, а не в общую систему.

Как создать и активировать

1
Создать окружение
В папке проекта выполните python3 -m venv .venv - Python создаст папку .venv с чистым окружением.
2
Активировать
На macOS и Linux - source .venv/bin/activate. На Windows - .venv\Scripts\activate. После этого в начале строки терминала появится (.venv).
3
Ставить пакеты
Теперь pip install кладёт библиотеки только в этот проект. Список зависимостей удобно держать в requirements.txt.
4
Выйти
Когда закончили - команда deactivate возвращает терминал в обычное состояние.

Команды по шагам - macOS и Linux:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

На Windows активация выглядит иначе:

python3 -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt

Признак, что окружение активно - приставка (.venv) в начале строки терминала. Выйти:

deactivate

Почему агент создаёт venv сам

В вайбкодинге агент обычно сам заводит окружение в начале работы над проектом: создаёт .venv, активирует его и туда ставит зависимости. Вы видите это в логе и можете не вмешиваться.

Знать про venv стоит ради одной частой ситуации: вы открыли проект на следующий день, запускаете - и ничего не работает, "пакет не найден". Чаще всего причина в том, что окружение просто не активировано в новом окне терминала. Команда активации (source .venv/bin/activate) лечит это сразу.