Прямой ответ
Хаос из «глобальных» пакетов, сломанных версий и десятков гигабайт дублей лечится тремя правилами: один проект — одно изолированное окружение, зависимости зафиксированы файлом, инструмент выбран один и используется последовательно. Из трёх популярных инструментов: 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-сборки часто требуют компиляции.
Практические правила:
- Используйте Miniforge/Micromamba вместо «полной» Anaconda: дистрибутив на 80 МБ вместо 3+ ГБ, канал conda-forge по умолчанию.
- На каждое окружение — отдельный env:
conda create -n proj python=3.12; окружения лежат в~/miniforge3/envsи тоже накапливаются. - Не ставьте пакеты pip «поверх» conda-пакета с тем же именем — классический источник конфликтов версий.
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.
Мини-алгоритм выбора под задачу
Пройдите по шагам — решение принимается за минуту:
- Проект чисто Python-ный (веб, скрипты, API)? → venv или uv. Разница: uv быстрее и экономит диск кэшем; venv — «ноль новых инструментов».
- Нужны научные бинарные пакеты (GDAL, MKL, R-мосты) или нестандартная версия Python? → conda (Miniforge). Это её историческая ниша, где pip-сборки страдают.
- Нужна полная воспроизводимость в команде/CI? → uv lock или pip-tools (hash-режим) поверх venv; в conda-проектах —
conda-lock. Lock-файл коммитится, окружение разворачивается одной командой. - Проект живёт в Docker? → внутри контейнера достаточно venv+pip: conda-слой удорожает образ без необходимости.
- Учебный курс требует конкретный стек → используйте требуемый, не смешивая: конфликт инструментов в учёбе дороже, чем идеология.
Отдельная ловушка 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 (ссылки в шапке).