Если вы управляете средой разработки Python с помощью conda, я рекомендую сначала прочитать приведенную ниже статью.

Данная статья кратко подводит итоги, а также представляет практическое руководство по созданию, удалению, клонированию и переносу среды conda.


1. Однострочное резюме: Anaconda против Miniconda



В кратце, можно сказать следующее.

  • Anaconda:
    → это дистрибутив, который устанавливает множество пакетов часто используемых в науке о данных/машинном обучении.

  • Miniconda:
    → предоставляет только функции управления средой/пакетами,
    где разработчик сам выбирает и устанавливает необходимые пакеты, создавая минималистичный дистрибутив.

Я предпочитаю “начинать с легкости и добавлять пакеты только по мере необходимости”, поэтому,
я рекомендую установить Miniconda и на его основе настраивать среду.

  • Занимает меньше места на диске

  • Обновления проще и менее хлопотные

  • Можно устанавливать только те пакеты, которые действительно нужны для проекта, что упрощает организацию среды.


2. Быстрое знакомство с концепцией среды conda

“Среда (environment)” в conda — это набор Python/пакетов, изолированный для каждого проекта.

  • env A: Python 3.10 + Django 4 + определенные версии библиотек

  • env B: Python 3.11 + FastAPI + совершенно другой набор библиотек

Ключевым моментом является изоляция различных версий, чтобы они не мешали друг другу.

Основные команды, часто используемые для управления средой, следующие:

# Просмотр списка текущих установленных conda сред
conda env list

# Или
conda info --envs

3. Создание среды conda



3.1 Создание самой базовой среды

conda create -n myenv python=3.12
  • -n myenv : задает имя среды как myenv

  • python=3.12 : используется версия Python 3.12

После создания среды:

conda activate myenv   # активация среды
conda deactivate       # деактивация среды

3.2 Установка часто используемых пакетов при создании

conda create -n myenv python=3.12 numpy pandas matplotlib

Создается новая среда, в которую устанавливаются перечисленные пакеты из базового канала Miniconda.

После этого можно:

conda activate myenv
conda install scikit-learn
# Или
pip install requests

добавлять пакеты по мере необходимости.


4. Удаление среды conda

Неиспользуемые среды лучше удалять.
(среды conda могут занимать довольно много места на диске.)

# Удаление среды myenv
conda env remove -n myenv

После удаления проверьте:

conda env list

Если myenv исчез из списка, значит, все в порядке.


5. Клонирование среды conda

Когда вы хотите создать
“среду с похожими настройками, но с другим именем” для экспериментов.

# создание клонированной среды new-env на основе existing-env
conda create -n new-env --clone existing-env
  • Так как версии пакетов сохраняются,

  • это часто используется, когда “вы хотите оставить существующую среду нетронутой и провести новые эксперименты”.

После клонирования:

conda activate new-env

вы можете проверить, все ли работает.


6. Перенос среды conda

Когда хотите перенести среду на другой ПК или сервер,
самый распространенный способ — экспортировать среду в файл (import/export), а затем создавать новую среду на основе этого файла.

6.1 Экспорт среды (export) – создание файла YAML

# Экспорт среды myenv в файл env.yml
conda env export -n myenv > env.yml

В этом файле env.yml находятся:

  • Имя среды

  • Информация о каналах

  • Установленные пакеты и их версии

Эти данные зафиксированы.

Если вам нужно экспортировать только минимальный список на основе истории

Если вы хотите записать “только те пакеты, которые я установил самостоятельно” вместо полного списка зависимостей:

conda env export -n myenv --from-history > env-min.yml

Создав такой файл, в других средах при create conda автоматически установит необходимые зависимости.

6.2 Создание среды в другом месте (или на той же машине)

На другом ПК, сервере или в новом месте на той же машине:

conda env create -f env.yml

Таким образом создается среда с именем и версиями пакетов, определенными в env.yml.

  • Если в файле env.yml указано name: myenv, то будет создана именно эта среда

  • Если хотите изменить имя, нужно редактировать раздел name: в файле env.yml перед выполнением

Например, если изменить name: myenv на name: myenv-dev в env.yml:

conda env create -f env.yml
conda activate myenv-dev

Вы получите такую же конфигурацию, но с другим именем.


7. Часто используемые паттерны conda

Когда вы настраиваете свою среду на основе Miniconda, я собрал несколько полезных паттернов, которые часто используются.

  1. Создавайте по одной среде для каждого проекта

    • Назовите среду по имени проекта, например proj-a-env, proj-b-env.

    • Это упрощает управление версиями, избегая конфликтов.

  2. Минимальная установка окружения, расширяйте только по мере необходимости

    • Сначала установите python и несколько основных пакетов.

    • По мере работы над проектом используйте conda install или pip install для расширения:

      → это соответствует минималистичной философии Miniconda.

  3. Регулярно экспортируйте важные среды

    • На этапе релиза, перед развертыванием:

      bash conda env export -n proj-a-env --from-history > proj-a-env.yml

    • Если вы закоммитите этот файл в репозиторий,
      то ваши коллеги смогут легко воспроизвести ту же среду.

  4. Сделайте резервную копию перед крупными изменениями с помощью клонирования

    • Перед обновлением пакетов или изменением версии Python:

      bash conda create -n proj-a-backup --clone proj-a-env

    • Если возникнут проблемы, можно быстро вернуться к резервной среде.


изображение среды python conda

Заключение: Начните с легкости, расширяйтесь по мере необходимости

Итак, выбор прост.

  • Anaconda подразумевает установку “всех пакетов, которые могут понадобиться” сразу же.

  • Miniconda означает “устанавливать только то, что действительно необходимо по мере необходимости”.

В условиях, когда каждый проект требует различных версий Python и наборов пакетов,
комбинация Miniconda + хорошо управляемая среда conda оказывается значительно более гибкой.

Что касается среды:

  • Создайте (conda create)

  • Активируйте (conda activate)

  • Удалите (conda env remove)

  • Клонируйте (conda create --clone)

  • Переносите (conda env export / conda env create)

Если вы освоите это на базовом уровне, при каждом новом проекте
вы сможете избежать вопросов, подобных “что мне удалить и что заново установить?”

При начале нового проекта:

  1. Создайте новую среду на основе Miniconda

  2. Установите в нее только те пакеты, которые действительно нужны.

  3. Если конфигурация вас устраивает, экспортируйте ее в env.yml,
    а затем немного модифицируйте для следующего проекта.

Как только это станет вашим обычаем, управление окружением conda станет не обременительным, а “надежной привычкой поддерживать чистоту проекта”.