Currently viewing the human version
Switch to AI version

Conda спасает от dependency hell'а

Conda спасает от dependency hell'а

Помню, как мы три дня потратили на деплой ML модели. pip install tensorflow==2.13.0 прошел без ошибок, но при запуске обучения

  • `Your CPU supports instructions that this TensorFlow binary was not compiled to use:

AVX2 FMA. GPU не определялся вообще. Потом 6 часов ставили CUDA 11.8, cudnn, но версии не совпали: libcudnn.so.8: cannot open shared object file. В итоге пришлось переустанавливать весь сервер. С тех пор conda install tensorflow-gpu=2.13.0`

  • все работает сразу, включая CUDA.

Зачем вообще нужен Conda

Conda решает проблемы, которые pip не может. pip отлично работает для простых Python пакетов, но когда дело доходит до системных зависимостей, начинается боль:

  • NumPy падает с `ImportError:

BLAS/LAPACK libraries not found` если system dependencies не поставлены

  • OpenCV: ImportError: libgthread-2.0.so.0: cannot open shared object file на свежей Ubuntu

  • PyTorch: `RuntimeError:

CUDA out of memory` или вообще не видит GPU без nvidia-toolkit

  • scikit-learn: Microsoft Visual C++ 14.0 is required на Windows
  • 3 часа на stackoverflow

Conda устанавливает все это одной командой.

Реальные примеры из жизни

Кейс 1: Миграция с production сервера Старый сервер умирал, нужно было перенести ML pipeline на новый. С pip requirements.txt полдня мучился: error: [Errno 2] No such file or directory: 'cmake', потом `RuntimeError:

Platform linux_x86_64 is not a supported platform. С conda env export` скопировал весь environment за 10 минут. Даже CUDA версии совпали!

Кейс 2: Команда из 8 разработчиков Каждый ставил зависимости как хотел. У кого-то Num

Py 1.18, у кого-то 1.24. Модель обучалась по-разному. Перешли на общий environment.yml

  • проблем больше нет.

**Кейс 3:

ARM64 MacBook M1/M2** TensorFlow на новых маках с pip

Conda против pip

  • честное сравнение

Когда использовать Conda:

  • Data science проекты

  • Работа с CUDA

  • Команда больше 2 человек

  • Production deployment

  • Работа с R, Julia, или другими языками

Когда pip все еще лучше:

  • Простые веб-приложения

  • Только Python пакеты

  • Быстрый прототип

  • Пакет есть только в PyPI

Conda Logo

Conda channels

  • где брать пакеты

conda-forge

Conda-forge Logo

defaults от Anaconda

bioconda

Настрой правильные приоритеты:

conda config --add channels conda-forge
conda config --set channel_priority strict

Performance reality check

Да, Conda медленнее pip при установке простых пакетов. Но когда у тебя environment с 100+ зависимостями, solver Conda'ы спасает время:

  • pip: может поставить несовместимые версии, придется разбираться

  • conda: проверит все заранее, поставит то что работает

С libmamba solver (дефолт с conda 23.10) установка TensorFlow стала в 2 раза быстрее. Mamba вообще в 10 раз быстрее conda при создании больших environment'ов

  • наш тест показал: conda 15 минут, mamba 90 секунд для установки PyTorch + TensorFlow + Jupyter.

Mamba Fast Package Manager

Дополнительные ресурсы:

Python Package Management Workflow

Conda vs конкуренты - честное сравнение

Инструмент

Что хорошо

Что бесит

Conda

Не падает на системных зависимостях

Тормозит как Windows Vista

pip + venv

Быстрый и простой

Сломается на первой же CUDA библиотеке

Mamba

Conda, только быстрый

Молодой проект, может внезапно сломаться

Poetry

Красивые lock файлы

Только Python, забудь про системные пакеты

Ставим Conda правильно (спойлер: используй Mambaforge)

Какой дистрибутив выбрать

У тебя есть несколько вариантов, но я сразу скажу правильный ответ: Mambaforge. Остальное - для тех, кто любит страдать:

Anaconda Distribution (3GB+)

Полный дистрибутив Anaconda включает 250+ пакетов для data science, Jupyter Notebook, Spyder IDE и Anaconda Navigator. Хорош для начинающих, но занимает много места.

## Windows
## Скачай .exe с официального сайта

## macOS  
brew install --cask anaconda

## Linux (проверь актуальную версию на anaconda.com)
wget https://repo.anaconda.com/archive/Anaconda3-2025.06-1-Linux-x86_64.sh
bash Anaconda3-2025.06-1-Linux-x86_64.sh

Miniconda (400MB)

Минимальная установка только с Python и Conda. Рекомендуется для опытных разработчиков.

## Linux/macOS
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

## Windows PowerShell
Invoke-WebRequest -Uri https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe -OutFile miniconda.exe
Start-Process -FilePath \"miniconda.exe\" -Wait

Miniforge (просто ставь это)

Miniforge - это то что нужно. Conda + mamba из коробки, conda-forge канал по умолчанию, никаких коммерческих заморочек. Mambaforge deprecated с января 2025 - используй Miniforge!

## Linux/macOS
curl -L -O \"https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh\"
bash Miniforge3-$(uname)-$(uname -m).sh

Базовые команды

После установки проверь, что все работает:

conda --version  # Conda 25.7.0 (released August 2025)
conda info       # Подробная информация о конфигурации

Создание и управление environment'ами

## Создание нового environment'а
conda create -n myproject python=3.12

## Активация
conda activate myproject

## Установка пакетов
conda install numpy pandas jupyter

## Список установленных пакетов
conda list

## Экспорт environment'а
conda env export > environment.yml

## Создание из файла
conda env create -f environment.yml

## Удаление environment'а
conda env remove -n myproject

Российская специфика (VPN и прокси)

Каналы которые не тормозят

Дефолтные каналы Anaconda тормозят из России как будто они на dial-up. Плюс с 2020 года у них коммерческие ограничения. Переходи на conda-forge:

## Добавить conda-forge с высоким приоритетом
conda config --add channels conda-forge
conda config --set channel_priority strict

## Проверить настройки
conda config --show channels

Когда корпоративный прокси все ломает

Если работаешь из офиса и IT отдел заблокировал половину интернета:

## Отключить SSL проверку (осторожно!)
conda config --set ssl_verify false

## Настроить proxy - см. [официальную документацию по прокси](https://docs.conda.io/projects/conda/en/stable/user-guide/configuration/use-condarc.html#proxy-settings)
## Пример: conda config --set proxy_servers.http PROXY_URL
## Пример: conda config --set proxy_servers.https PROXY_URL

Альтернативные зеркала и блокировки

В России conda-forge часто тормозит из-за международных ограничений. Если видишь CondaHTTPError: HTTP 000 CONNECTION FAILED, попробуй:

## Альтернативные каналы (если основные недоступны)
conda config --add channels conda-forge
conda config --set channel_priority strict

## Если ничего не помогает - через VPN
conda config --set ssl_verify false  # только для тестинга!

Реальность: В некоторых офисах блокируют anaconda.org. Если видишь ReadTimeoutError, включай VPN или используй корпоративный прокси.

Оптимизация производительности

Использование Mamba

После установки Conda установи Mamba для ускорения:

conda install mamba -n base -c conda-forge

Теперь можешь использовать mamba вместо conda во всех командах:

mamba install tensorflow pytorch  # В разы быстрее
mamba env create -f environment.yml

Очистка кэша

Conda кэширует скачанные пакеты. Периодически очищай:

conda clean --all  # Удалит все кэшированные файлы
conda clean --packages  # Только файлы пакетов

Miniforge Installation

Интеграция с IDE

VS Code

Установи Python расширение. VS Code автоматически находит Conda environment'ы.

PyCharm

В настройках проекта выбери Python Interpreter → Conda Environment → Existing environment.

Jupyter

Для работы с Jupyter в разных environment'ах:

conda install nb_conda_kernels -n base
conda install ipykernel -n myproject

Теперь в Jupyter будут доступны kernels из всех environment'ов.

Дополнительные ресурсы:

Часто задаваемые вопросы

Q

Почему Conda тормозит как будто на dialup-модеме?

A

Conda проверяет ВСЕ зависимости перед установкой. Это занимает вечность (5-15 минут для больших пакетов), но зато потом все работает. С conda 23.10 libmamba solver включен по умолчанию

  • стало в 2-3 раза быстрее. Но лучше просто ставь mamba и получи 10x ускорение:bashconda install mamba -c conda-forge mamba install что-угодно # в разы быстрее
Q

В чем разница между Conda и Anaconda?

A

Conda

  • это пакетный менеджер (как npm или pip). Anaconda
  • дистрибутив, который включает Conda плюс 250+ предустановленных пакетов. Если тебе нужен только Conda, ставь Miniconda.
Q

Можно ли использовать pip внутри Conda environment'а?

A

Да, но осторожно. Сначала установи все что можешь через conda, потом доустанавливай через pip.

Conda не отслеживает pip пакеты, что может привести к конфликтам. Лучше добавлять pip зависимости в environment.yml:```yamldependencies:

  • python=3.12

  • numpy

  • pip

  • pip:

  • some-pip-only-package```

Q

Как обновить все пакеты в environment'е?

A

bashconda update --all # Обновит все пакеты в текущем environment'еconda update conda # Обновить сам CondaБудь осторожен с --all

  • может сломать совместимость. Лучше обновлять конкретные пакеты.
Q

Environment занимает как половина SSD. WTF?

A

Да, Conda жрет место как Chrome оперативку. У меня было 4 environment'а с TensorFlow

  • 50GB только conda! Каждый environment дублирует пакеты. На production сервере c 16GB диском это было катастрофой. Но есть способы с этим бороться:bashconda clean --all # Удали весь хлам из кэшаconda install --copy=false # Используй hardlinks вместо копированияЕсли совсем плохо, попробуй conda-pack
  • упаковывает environment в архив:bashconda install conda-packconda pack -n myenv -o myenv.tar.gz
Q

Как работать с Conda в Docker?

A

Используй официальные образы:dockerfileFROM condaforge/miniforge3:latestCOPY environment.yml /tmp/RUN mamba env create -f /tmp/environment.ymlИли conda/miniconda3:dockerfileFROM conda/miniconda3COPY environment.yml .RUN conda env create -f environment.yml

Q

Conda не видит новую версию пакета

A

Обнови индекс каналов:bashconda update --all --dry-run # Проверить что доступноconda update conda # Обновить сам Condaconda search package-name # Посмотреть доступные версии

Q

Как экспортировать environment для другой платформы?

A

Environment.yml с точными версиями работает только на той же платформе. Для кроссплатформенности:bash# Экспорт без точных версий и build номеровconda env export --no-builds > environment.yml# Или создай вручную с минимальными зависимостямиconda env export --from-history > environment.yml

Q

Performance тюнинг для Conda

A

bash# Ускорить разрешение зависимостейconda config --set solver libmamba# Использовать параллельную загрузку (mamba)conda install mamba -c conda-forge# Настроить количество потоковconda config --set repodata_threads 8

Q

Conda environment не активируется в shell script

A

В bash скриптах нужно инициализировать Conda:bash#!/bin/bashsource ~/miniconda3/etc/profile.d/conda.shconda activate myenvpython script.pyИли используй полный путь:bash~/miniconda3/envs/myenv/bin/python script.py

Q

Как откатиться к предыдущей версии пакета?

A

bash# Посмотреть историю измененийconda list --revisions# Откатиться к ревизииconda install --revision 2# Или установить конкретную версиюconda install package=1.2.3

Q

SSL certificate errors - опять эта фигня

A

Если видишь "SSL:

CERTIFICATE_VERIFY_FAILED", значит где-то посередине сидит корпоративный proxy и портит жизнь:```bash# Временно отключить SSL (небезопасно, но работает)conda config --set ssl_verify false# Или попробуй обновить сертификатыconda update certifi ca-certificates# В крайнем случае

  • используй корпоративные зеркала (если настроены)# conda config --add channels INTERNAL_MIRROR_URL```В России частая проблема: `requests.exceptions.

ConnectTimeout: HTTPSConnectionPool`. Решение: VPN или зеркала МФТИ. На работе у меня постоянно так

  • поднимаю Outline VPN и все летает.
Q

Conda vs Docker для production?

A

Используй оба.

Conda для управления Python окружением, Docker для изоляции всего сервиса:```dockerfileFROM python:
3.12-slim

RUN conda install -c conda-forge package1 package2```Conda лучше справляется с научными библиотеками (NumPy, SciPy, PyTorch), Docker

  • с системной изоляцией.

Ссылки, которые реально пригодятся