Получить доступ

Зачем нужно виртуальное окружение и как управлять зависимостями?

JuniorОкружение и инструменты
Ещё спрашивают так:
  • Что такое venv?
  • Как зафиксировать версии библиотек проекта?
  • Чем pip отличается от poetry и uv?
Коротко

Виртуальное окружение — отдельная копия Python со своими пакетами для каждого проекта.

  • Проекты не конфликтуют версиями библиотек, системный Python не засоряется
  • python -m venv .venv, активация, pip install -r requirements.txt

А ещё Версии фиксируют lock-файлом: pip freeze, poetry.lock, uv.lock

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Без окружения все пакеты ставятся в один общий Python. Если проекту A нужна Django 4, а проекту B — Django 5, они начинают мешать друг другу. Кроме того, pip install в системный Python может сломать системные утилиты.

venv создаёт папку с собственным интерпретатором и каталогом пакетов:

  • python -m venv .venv — создать;
  • source .venv/bin/activate (Linux, macOS) или .venv\Scripts\activate (Windows) — активировать;
  • после этого pip install ставит пакеты только в это окружение.

Папку окружения в git не кладут — её всегда можно пересоздать.

Зависимости. Минимальный вариант — requirements.txt: список пакетов с версиями, полученный через pip freeze > requirements.txt. Он фиксирует и прямые, и транзитивные зависимости, но не разделяет их.

Современные инструменты разделяют «что нужно проекту» (pyproject.toml) и «точные версии всего дерева» (lock-файл):

  • poetry — управление зависимостями, lock-файл, сборка пакетов;
  • uv — очень быстрый установщик и менеджер проектов и окружений.

Lock-файл гарантирует, что у коллеги, в CI и на сервере стоят одни и те же версии.

Пример

python -m venv .venv
source .venv/bin/activate
pip install requests==2.32.3
pip freeze > requirements.txt

# на другой машине
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

# то же через uv
uv init && uv add requests && uv sync

Что хотят услышать

  • Зачем окружение: изоляция версий и защита системного Python.
  • Команды создания, активации, установки.
  • Фиксация версий и смысл lock-файла.
  • Знание хотя бы одного современного инструмента — плюс.

Частые ошибки

  • Класть .venv в репозиторий.
  • Ставить зависимости через sudo pip install в системный Python.

Что спросят дальше

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем