Москва: проверенные б/у ноутбуки с гарантией и проверкой перед оплатой
+7 906 722-94-45

Главная → Статьи → Python-окружения на ноутбуке: venv, conda и uv — порядок без хаоса

Управление Python-окружениями на ноутбуке: venv, conda и uv без конфликтов и мусора на диске

Как организовать Python-окружения на рабочем ноутбуке: venv, conda/mamba и uv, изоляция проектов, фиксация зависимостей, экономия места на SSD и безопасное обновление пакетов.

Прямой ответ

Хаос из «глобальных» пакетов, сломанных версий и десятков гигабайт дублей лечится тремя правилами: один проект — одно изолированное окружение, зависимости зафиксированы файлом, инструмент выбран один и используется последовательно. Из трёх популярных инструментов: venv — стандартная библиотека Python, нулевая установка, достаточно 80% проектов; conda — когда нужны бинарные научные пакеты и конкретные версии Python и CUDA-библиотек; uv — современный резолвер и менеджер (Rust), в разы быстрее pip и умеет почти всё: venv, установки Python-версий, lock-файлы.

Смешивать инструменты в одном окружении — главный источник необъяснимых поломок: pip не знает о conda-зависимостях, conda может перезаписать установленное pip. Выбирайте стек на проект и держитесь его.

venv: базовый стандарт

Создание и активация — две команды:

python -m venv .venv
source .venv/bin/activate        # Linux/macOS
.venv\Scripts\activate           # Windows (PowerShell)

Что важно знать на ноутбуке:

  • Окружение живёт в папке .venv проекта; удаление папки = чистое удаление окружения. Никаких следов в системе.
  • Размер типичного окружения с numpy/pandas — 300–600 МБ; с torch+cuda — 3–6 ГБ. Десять проектов — это уже десятки гигабайт, поэтому дубликаты тяжёлых стеков держите осознанно (см. раздел про экономию места).
  • pyvenv.cfg внутри .venv ссылается на системный Python: если вы обновили или удалили базовый интерпретатор, окружение сломается — пересоздавайте.
  • В .gitignore — всегда .venv/; в git попадают только requirements.txt/pyproject.toml + lock-файл.

Фиксация зависимостей: минимум — pip freeze > requirements.txt; лучше — pyproject.toml с явными версиями и hash-режимом для воспроизводимости.

conda/mamba: когда без неё не обойтись

Conda управляет не только Python-пакетами, но и версиями самого Python и бинарными зависимостями (MKL, CUDA-рантаймы, гео-библиотеки вроде GDAL). Это спасение в data science и геоаналитике, где pip-сборки часто требуют компиляции.

Практические правила:

  1. Используйте Miniforge/Micromamba вместо «полной» Anaconda: дистрибутив на 80 МБ вместо 3+ ГБ, канал conda-forge по умолчанию.
  2. На каждое окружение — отдельный env: conda create -n proj python=3.12; окружения лежат в ~/miniforge3/envs и тоже накапливаются.
  3. Не ставьте пакеты pip «поверх» conda-пакета с тем же именем — классический источник конфликтов версий.
  4. conda env export > environment.yml — фиксация окружения; conda env create -f environment.yml — восстановление.

На Windows conda-терминалы (conda activate) требуют инициализации оболочки — следуйте выводу conda init и перезапустите терминал.

uv: скорость и современный workflow

uv закрывает типовой цикл быстрее всех: создаёт venv, ставит пакеты (кэш ссылок вместо копий экономит и место, и время), умеет фиксировать lock-файлом и управлять версиями Python:

uv venv && source .venv/bin/activate
uv pip install -r requirements.txt    # заметно быстрее pip
uv python install 3.12                # отдельная версия Python под проект
uv lock                               # lock-файл для воспроизводимости

Ключевое преимущество на ноутбуке — глобальный кэш с жёсткими ссылками: один и тот же пакет версии X хранится на диске один раз, а окружения ссылаются на него. Десять проектов с torch превращаются из 40 ГБ в 6–8 ГБ. Если начинаете новый проект в 2026 году — uv разумный выбор по умолчанию; для существующих conda-проектов миграция не обязательна.

Экономия места и гигиена SSD

  • Раз в квартал: удалите мёртвые окружения (.venv заброшенных проектов, conda env list — что не используется).
  • Чистите кэши: pip cache purge, conda clean --all, uv cache prune.
  • Тяжёлые CUDA-сборки torch держите в одном общем окружении, если проекты совместимы по версиям.
  • Помните про общую картину: окружения + Docker-образы + кэши IDE — основные потребители диска разработчика; про соседнюю статью расхода читайте в материале про node_modules и диск.

Окружения и IDE: частая ошибка

IDE должна смотреть в интерпретатор проекта, а не системный: в VS Code — Python: Select Interpreter → .venv; в PyCharm — Settings → Project → Interpreter. Симптом ошибки — «в терминале работает, в IDE подчёркивает импорты». Если параллельно используете Jupyter, ядро тоже регистрируйте из окружения проекта — детали в статье про Jupyter на ноутбуке. На Windows при работе внутри WSL окружение создавайте в файловой системе Linux — это же требование скорости, что и для Docker в разборе WSL2 и Docker.

Мини-алгоритм выбора под задачу

Пройдите по шагам — решение принимается за минуту:

  1. Проект чисто Python-ный (веб, скрипты, API)? → venv или uv. Разница: uv быстрее и экономит диск кэшем; venv — «ноль новых инструментов».
  2. Нужны научные бинарные пакеты (GDAL, MKL, R-мосты) или нестандартная версия Python? → conda (Miniforge). Это её историческая ниша, где pip-сборки страдают.
  3. Нужна полная воспроизводимость в команде/CI? → uv lock или pip-tools (hash-режим) поверх venv; в conda-проектах — conda-lock. Lock-файл коммитится, окружение разворачивается одной командой.
  4. Проект живёт в Docker? → внутри контейнера достаточно venv+pip: conda-слой удорожает образ без необходимости.
  5. Учебный курс требует конкретный стек → используйте требуемый, не смешивая: конфликт инструментов в учёбе дороже, чем идеология.

Отдельная ловушка Windows: py launcher и несколько установленных Python соседствуют молча, и python -m venv может создать окружение не от той версии, которую вы думаете. Проверяйте py --list и указывайте интерпретатор явно: py -3.12 -m venv .venv. Внутри WSL действует правило из контейнерной статьи: окружения создавайте в Linux-файловой системе, доступ к NTFS — только через явные пути.

FAQ

Что выбрать новичку: venv или conda? venv + pip: стандарт, минимум сущностей. Conda — когда учебный курс или проект явно требует её (научный стек, конкретные бинарные пакеты).

Можно ли держать и conda, и uv? Да, но в разных проектах. Внутри одного окружения — один инструмент, иначе resolver-конфликты неизбежны.

Почему pip-установка такая медленная на моём ноутбуке? Проверьте диск (HDD/почти полный SSD резко замедляют), антивирус на Windows (исключите папки окружений из проверки в реальном времени) и попробуйте uv — часто ускорение в 5–10 раз.

Нужен ли Docker вместо venv? Для воспроизводимости в команде — да, контейнер фиксирует и ОС-зависимости. Для локальной разработки venv/uv проще и легче по ресурсам; часто используют оба: venv для IDE, Docker для запуска сервиса.

Источники: документация Python (venv), Astral uv, Conda, Python Packaging Authority (ссылки в шапке).