Anaconda в работе администратора: установка, окружения, автоматизация

Раздел: Администрирование -> Дистрибутивы Python

Основы работы с Anaconda Python в администрировании

Как эффективно управлять дистрибутивом Python на сервере или рабочей станции администратора?

Для централизованного управления версиями Python, изолированными окружениями и предустановленными научными пакетами оптимальным решением является дистрибутив Anaconda. Его установка выполняется через официальный инсталлятор или с помощью пакетного менеджера, например, apt на Ubuntu.

wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
bash Anaconda3-2024.10-1-Linux-x86_64.sh -b -p $HOME/anaconda3
eval "$($HOME/anaconda3/bin/conda shell.bash hook)"

Anaconda python (anaconda python)

После установки доступна основная команда conda. Для создания окружения с определённой версией Python:

conda create -n myenv python=3.9 -y
conda activate myenv

Типичная ошибка: при активации окружения возникает CommandNotFoundError. Решение - инициализировать conda для текущей оболочки: conda init bash и перезапустить сеанс.

Цель: получить повторяемую среду разработки с минимальным вмешательством в систему.

Как использовать Miniconda вместо полной Anaconda?

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

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3

Если путь установки выбран нестандартный, может потребоваться вручную добавить /opt/miniconda3/bin в PATH. Иначе команда conda не будет найдена.

Как управлять каналами (channels) для ускорения установки?

Добавление канала conda-forge часто даёт больше пакетов и более свежие версии.

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

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

Как экспортировать и импортировать окружение?

Команда conda env export создаёт YAML-файл с полным списком зависимостей.

conda activate myenv
conda env export > environment.yml
# На другой машине:
conda env create -f environment.yml

Ошибка: некоторые зависимости не устанавливаются из-за конфликта версий. Рекомендуется использовать conda env export --from-history, чтобы экспортировать только явно указанные пакеты.

Как использовать pip внутри conda-окружения?

Хотя conda предпочтительнее, некоторые пакеты доступны только через pip.

conda activate myenv
pip install requests

Важно: не смешивать pip install и conda install в одном сеансе без необходимости. Это может привести к непредсказуемому состоянию окружения.

Проблема: после установки через pip версия пакета может конфликтовать с conda. Решение - сначала попытаться установить через conda, а pip использовать только для пакетов, которых нет в conda.

Как удалить окружение или сам дистрибутив?

Удаление окружения:

conda env remove -n myenv

Удаление всей Anaconda:

rm -rf $HOME/anaconda3

После этого требуется вручную очистить файл ~/.bashrc от строк, добавленных conda init.

Расширенные сценарии администрирования с Anaconda

Создание окружений с разными версиями Python для тестирования совместимости

Пример
conda create -n py38 python=3.8
conda create -n py310 python=3.10
conda create -n py312 python=3.12

Каждое окружение изолировано, что позволяет запускать скрипты под разными версиями без конфликтов.

Установка пакетов напрямую из репозитория GitHub

Пример
conda activate myenv
pip install git+https://github.com/author/package.git@main

Такой подход удобен для тестирования невыпущенных версий библиотек.

Если в пакете есть C-расширения, может потребоваться компилятор. Установите build-essential: conda install gcc_linux-64 gxx_linux-64.

Сборка собственного пакета через conda-build

Пример
conda install conda-build
conda skeleton pypi somepackage
conda build somepackage
conda install --use-local somepackage

Результат: локальный пакет, пригодный для распространения внутри организации.

Настройка прокси для корпоративной сети

Пример
conda config --set proxy_servers.http http://proxy.company.com:8080
conda config --set proxy_servers.https http://proxy.company.com:8080

Также можно задать через переменные окружения HTTP_PROXY и HTTPS_PROXY.

Автоматизация создания окружений через скрипты

Пример
#!/bin/bash
CONDA_BASE=$(conda info --base)
source $CONDA_BASE/etc/profile.d/conda.sh
conda create -n prod python=3.10 pandas numpy -y
conda activate prod
pip install -r requirements.txt
conda deactivate

Этот скрипт можно использовать в CI/CD для гарантии одинакового окружения.

Кэширование пакетов для ускорения повторных установок

Пример
conda config --set pkgs_dirs /opt/conda_pkgs
conda clean --packages --tarballs

При установке пакеты сохраняются в указанную директорию. При повторной установке в другое окружение они будут взяты из кэша.

Параллельная установка нескольких версий Anaconda

Можно установить Anaconda в разные каталоги и переключаться между ними через export PATH или символические ссылки.

Пример
cd /opt
sudo bash Anaconda3-2024.10.sh -b -p /opt/anaconda3-2024
sudo bash Anaconda3-2023.07.sh -b -p /opt/anaconda3-2023
alias conda2024='PATH=/opt/anaconda3-2024/bin:$PATH conda'
alias conda2023='PATH=/opt/anaconda3-2023/bin:$PATH conda'

Такой подход полезен при миграции проектов между версиями.

Anaconda Python - comments

En
Anaconda python (python)