Anaconda в работе администратора: установка, окружения, автоматизация
Основы работы с 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'Такой подход полезен при миграции проектов между версиями.