Оглавление
1. Как использовать Python определённой версии в Linux
2. Что такое Miniconda и Micromamba
4. Как установить Miniconda в Linux
4.1 Как установить Miniconda в Debian (Kali Linux, Linux Mint, Ubuntu)
4.2 Как установить Miniconda в Arch Linux (Manjaro, BlackArch)
5. Начало работы с Miniconda — как создать и использовать окружение с определённой версией Python
6. Работа с пакетами в окружении Miniconda
7. Использование pip внутри Miniconda
8. Экспорт и воспроизведение окружения
9. Каналы окружения Conda (Miniconda / Miniconda)
10. Запуск команды без активации окружения
12. Практические советы по использованию Miniconda
13. Ошибки и решение проблем Miniconda
13.1 Ошибка OSError: [Errno 28] No space left on device
13.2 Ошибка error: [Errno 18] Invalid cross-device link
13.3 error: externally-managed-environment
14. Как удалить Miniconda в Linux
14.1 Как удалить Miniconda в Debian (Kali Linux, Linux Mint, Ubuntu)
14.2 Как удалить Miniconda в Arch Linux (Manjaro, BlackArch)
1. Как использовать Python определённой версии в Linux
Если вам нужно быстро и без проблем создать виртуальное окружение с определённой версией Python, то данный мануал покажет как это сделать.
Определённая версия Python может быть зависимостью программного обеспечения, например, модели нейросетей (ИИ) иногда требуют конкретную версию Python. Если быть точнее, то Python указанной версии требуется зависимостями ПО необходимого для запуска нейросети, но сути это не меняет — необходимо получить исполнимые файлы Python той или иной версии.
Не будем рассматривать сложный вариант — компиляция разных версий Python из исходного кода. В этой инструкции будет показано как создать окружения с любой версией Python буквально несколькими командами.
Для этого отлично подходят Miniconda и Micromamba. В данной инструкции мы будем использовать Miniconda.
Смотрите также: Как создавать виртуальные окружения с любой версией Python (инструкция по использованию Miniconda)
2. Что такое Miniconda и Micromamba
Miniconda и Micromamba — это инструменты для управления окружениями и пакетами (conda-экосистема).
Не смотря на общие буквы в названии, Miniconda и Micromamba это разные программы от разных производителей. На более продвинутом уровне использования эти инструменты имеют различия, но в рамках нужной нам функциональности — создать виртуального окружения Python с выбранной версией Python — эти программы являются аналогами.
Вы можете выбрать любую из них:
- Miniconda — появилась раньше, написана на Python из-за чего иногда может быть медленнее при разрешении зависимостей, но в показанных в этой инструкции примерах это не будет проявляться
- Micromamba — более современная альтернатива, написана на C++ и поэтому в некоторых сценариях разрешения зависимостей может быть быстрее, но в базовом использовании как показано в этой статье, это не будет проявляться.
Оба этих пакета отсутствуют в стандартных репозиториях Linux.
В общем, выберите любую из них — в базовых случаях использования разница между ними только в командах используемых для создания и активации виртуальных окружений Python.
Данная статья посвящена Miniconda.
Вам необязательно иметь сразу оба инструмента Miniconda и Micromamba — достаточно выбрать один из них. Но при желании вы можете установить их оба — они не конфликтуют друг с другом. Более того, созданное вами окружение Python в одной из этих программ может использоваться (активироваться, например) в том числе и в другой программе.
3. В чём разница между виртуальными окружениями Python (venv, virtualenv) и окружениями Conda (Miniconda / Micromamba)
Прежде чем продолжить, пара слов о том, зачем вообще нужны инструменты Miniconda и Micromamba и почему недостаточно обычных виртуальных окружений Python.
Стандартными инструментами Python можно создавать изолированные виртуальные окружения, например:
python -m venv venv source venv/bin/activate
В этих окружениях вы можете использовать pip для установки пакетов, которые будут видны только скриптам в этом окружении. Ограничение этого подхода — всё происходит в рамках одной версии Python — текущей системной версии. То есть у вас не получится произвольно выбрать версию Python при создании виртуального окружения. Конечно, есть вариант с компиляцией нужно версии из исходников, но мы рассматриваем более простые случаи использования. В качестве менеджера пакетов используется pip. То есть пакеты, которые можно установить как зависимости, это только только Python пакеты. По умолчанию файлы этих окружений хранятся в той же папке где и созданы (например ./venv).
Что касается виртуальных окружений Conda, то при его создании вы можете выбрать произвольную версию Python — это одна из важнейших их особенностей, которая делает их особенно полезной для запуска приложений зависящих от определённой версии Python. Внутри этого окружения вы можете устанавливать пакеты как с помощью pip, так и менеджерами пакетов conda/mamba. В качестве пакетов и зависимостей для виртуальных окружений conda / mamba могут быть как пакеты Python, так и любые другие (включая C/C++). То есть, например, вы можете установить определённые версии CUDA, PyTorch и других исполнимых файлов в это окружение. В целом эти окружения имеют более полную изоляцию и тяжелее по весу. По умолчанию файлы окружений хранятся более централизованно, но их тоже можно создать в конкретной папке проекта.
4. Как установить Miniconda в Linux
4.1 Как установить Miniconda в Debian (Kali Linux, Linux Mint, Ubuntu)
Скачайте и запустите установочный скрипт:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash ~/Miniconda3-latest-Linux-x86_64.sh
Нажмите Enter для показа лицензии.
Для принятия лицензии введите «yes».
Затем нажмите Enter для принятия установочного пути по умолчанию (~/miniconda3).
Затем введите «yes» для внесения изменений в конфигурацию оболочки для инициализации conda при каждом открытии терминала.
Закройте и откройте терминал.
Чтобы не происходила активация conda при каждом открытии терминала (это не то же самое что инициализация), введите:
conda config --set auto_activate_base false
Если что-то пошло не так или для принудительной установки поверх имеющегося пакета, выполните эти команды (добавлена опция -f):
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash ~/Downloads/Miniconda3-latest-MacOSX-x86_64.sh -f
Для обновления Miniconda выполните команду:
conda update conda
Примечание: если вы отказались от автоматической инициализации conda, то в любое время вы можете выполнить инициализацию с помощью команды:
source ~/miniconda3/etc/profile.d/conda.sh
Или с помощью более современных команд, для ZSH:
eval "$(~/miniconda3/bin/conda shell.zsh hook)"
Для Bash:
eval "$(~/miniconda3/bin/conda shell.bash hook)"
Если вы решили включить автоматическую инициализацию, то сначала инициализируйте вручную:
source ~/miniconda3/etc/profile.d/conda.sh
А затем выполните одну из следующих команд (в зависимости от используемой вами оболочки) — ZSH:
conda init zsh
Bash:
conda init bash
4.2 Как установить Miniconda в Arch Linux (Manjaro, BlackArch)
Для установки используйте pikaur:
pikaur -S miniconda3
Смотрите также: Автоматическая установка и обновление пакетов AUR
Для инициализации Miniconda нужно выполнить:
source /opt/miniconda3/etc/profile.d/conda.sh
Примечание: эту команду нужно выполнять перед каждым использованием команды conda, то есть в том числе перед созданием или активацией окружения. Эффект этой команды сохраняется до закрытия терминала.
5. Начало работы с Miniconda — как создать и использовать окружение с определённой версией Python
Пример создания окружения с Python версии 3.12 (нужно выполнить только один раз):
conda create -n myenv python=3.12 -y
В моих тестах на некоторых дистрибутивах Linux в создаваемых окружениях отсутствовал pip, поэтому при создании окружения вы можете явно указать установку pip:
conda create -n myenv python=3.12 pip -y
Создание окружения с последней версий Python:
conda create -n test python -y
Создание окружения с одновременной установкой пакетов в Miniconda — это стандартный способ, он экономит время и избегает лишних пересборок зависимостей. Выше, выбирая версию Python, мы уже фактически создали окружение и сразу же установили Python. Можно указать любое количество пакетов для установки при создании окружения:
conda create -n myenv python=3.12 numpy pandas pytorch -c conda-forge -y
Далее пример создания окружения и одновременной установки пакетов с указанием нескольких каналов (важно для ML/ CUDA):
conda create -n ml-env python=3.11 pytorch torchvision pytorch-cuda=12.1 -c pytorch -c nvidia -c conda-forge -y
Для активации окружения выполните следующую команду (действует до закрытия терминала или до запуска команды выхода из окружения):
conda activate myenv
Проверка:
python --version which python
Если вы сталкиваетесь с ошибкой «error: externally-managed-environment», то установите в окружение pip следующим образом:
conda install pip
Для активации окружений которые находятся не в префиксе conda (~/.conda/envs/ или /opt/miniconda3/envs/ или ~/miniconda3), а в micromamba-префиксе, укажите полный путь до этого окружения, например:
conda activate /home/mial/.local/share/mamba/envs/qwen3-asr
Деактивация окружения:
conda deactivate
Для вывода списка окружений:
conda env list
Удаление окружения:
conda remove -n myenv --all
6. Работа с пакетами в окружении Miniconda
Базовый поиск пакетов
conda search cuda
Поиск по каналу
conda search -c nvidia cuda
Поиск с фильтрацией по версии:
conda search "python=3.12"
Поиск с фильтрацией по имени (частичное совпадение):
conda search "*cuda*"
Установка пакетов в уже существующее окружение в активированном окружении
conda install numpy scipy
Установка пакетов в уже существующее окружение без его активации (через -n) — это часто удобнее в скриптах:
conda install -n myenv numpy scipy
Обновление пакетов в окружении Miniconda — обновить конкретный пакет:
conda update numpy
Обновить всё окружение:
conda update --all
Удаление пакетов:
conda remove numpy
Удаление пакетов с указанием окружения:
conda remove -n myenv numpy
Просмотр установленных пакетов
conda list
Просмотр установленных пакетов для конкретного окружения:
conda list -n myenv
7. Использование pip внутри Miniconda
В окружении Conda (Miniconda / Micromamba) вы можете использовать pip как в обычном виртуальном окружении Python.
В окружении Conda можно использовать pip так же, как в обычном виртуальном окружении Python.
Разница между pip и conda:
- pip — разрешает зависимости локально (не учитывает всё окружение)
- conda — разрешает зависимости глобально (пересобирает зависимости целиком)
Если pip не справляется — лучше использовать conda.
Обычно pip уже предустановлен, но на всякий случай вы можете в этом убедиться (или если вы получаете ошибку «error: externally-managed-environment»):
conda install pip
Пример использования pip в окружении Conda (Miniconda / Micromamba):
pip install fastapi uvicorn
8. Экспорт и воспроизведение окружения
Экспорт окружения Conda (Miniconda / Micromamba) (аналог requirements.txt, но лучше):
conda env export -n myenv > environment.yml
Создание окружения из файла YAML:
conda env create -f environment.yml
Что произойдёт:
- прочитается YAML
- создастся новое окружение
- установятся все зависимости
Чтобы узнать где сохранено новое окружение:
conda env list
В списке будет присутствовать myenv.
Активация нового окружения — можно сделать в любой папке:
conda activate myenv
Важные нюансы
1. Имя окружения берётся из файла:
name: myenv
Для изменения имени окружения:
conda env create -n NEW_NAME -f environment.yml
2. Если окружение уже существует
Команда env create не обновляет, а упадёт с ошибкой.
Для обновления существующего окружения:
conda env update -n myenv -f environment.yml
3. Часто лучше делать пересоздание окружения “с нуля”. Самый надёжный вариант:
conda remove -n myenv --all conda env create -f environment.yml
4. Если в environment.yml есть блок pip:, то перечисленные в нём пакеты автоматически устанавливаются через pip:
- pip:
- some-package
5. Каналы берутся из:
channels: - conda-forge
Если они не указаны, то используются каналы из .condarc.
Клонирование окружения — очень полезно для экспериментов:
conda create -n myenv-copy --clone myenv
9. Каналы окружения Conda (Miniconda / Micromamba)
Мы уже несколько раз упоминали каналы, остановимся на них поподробнее.
Канал – это просто репозиторий бинарных пакетов conda (аналог PyPI, но с уже собранными зависимостями).
Примеры:
- conda-forge – основной community-канал
- defaults – официальный канал Anaconda
- pytorch – пакеты PyTorch
- nvidia – CUDA и GPU-зависимости
Основные каналы, которые реально используются
1. conda-forge (де-факто стандарт)
- самый большой репозиторий
- свежие версии
- хорошая совместимость
- используется по умолчанию в micromamba
Практика: чаще всего использовать только его.
2. defaults
- поддерживается Anaconda
- более консервативные версии
- иногда несовместим с conda-forge
Обычно:
- либо defaults
- либо conda-forge
- не смешивать без необходимости
3. Специализированные каналы
3.1 pytorch
-c pytorch
Для:
- PyTorch
- torchvision
- torchaudio
3.2 nvidia
-c nvidia
Для:
- CUDA
- cuDNN
- GPU-ускорение
Добавление канала:
conda config --append channels conda-forge
Посмотреть каналы:
conda config --get channels
Приоритет каналов критичен — частая причина конфликтов зависимостей.
10. Запуск команды без активации окружения
Запуск команды без активации окружения может быть полезно для скриптов, Cron и других похожих ситуаций:
conda run -n myenv python script.py
Или:
conda run -n myenv bash
11. Очистка кеша
Если начинаются странные конфликты или для экономии места:
conda clean --all
12. Практические советы по использованию Miniconda
1. При установке пакетов с использованием Miniconda, рекомендуется явно указывать канал для ML, иначе будут странные сборки:
-c conda-forge
2. Не нужно без необходимости смешивать каналы — плохой вариант: defaults + random + conda-forge
Хороший вариант: conda-forge (основной) + точечно pytorch / nvidia
3. Не нужно злоупотреблять pip — если пакет есть в conda, то лучше установить его через Miniconda.
Минимальный “production-like” сценарий
# создать окружение conda create -n app python=3.12 -c conda-forge -y # установить зависимости conda install -n app fastapi uvicorn numpy # добить pip-пакетами conda run -n app pip install some-package # запуск conda run -n app python main.py
13. Ошибки и решение проблем Miniconda
13.1 Ошибка OSError: [Errno 28] No space left on device
При установке пакета
pip install -U qwen-asr qwen-asr[vllm]
Возникла ошибка:
OSError: [Errno 28] No space left on device
При этом и место на диске, и иноды присутствуют в достаточном количестве.
Смотрите также:
- Как исправить ошибку ‘No Space Left on Device’ (на устройстве не осталось места) на Linux, когда свободное место на самом деле есть
- Какие файлы можно удалить при нехватке места на диске Linux
- ncdu: графический интерфейс du чтобы быстро узнать, какие файлы и папки израсходовали место на диске
Суть проблемы в том, что в дистрибутивах Linux временная папка нередка размещена не на физическом диске, а в tmpfs (виртуальной файловой системе в оперативной памяти). И эта папка может быть переполнена файлами установочных пакетов, поскольку её размер меньше чем свободное место на диске — отсюда и возникает ошибка о нехватке места.
Смотрите также: Файловая система в оперативной памяти для ускорения работы с файлами и уменьшения нагрузки на диск (tmpfs)
Решение проблемы — сохранять временные файлы не в /tmp (которая размещена в оперативной памяти и которая меньше размера диска), а прямо на диске:
mkdir -p ~/pip-tmp TMPDIR=~/pip-tmp pip install -U qwen-asr qwen-asr[vllm]
Дополнительно я отключаю кеш, поскольку это иногда вызывает другую ошибку:
TMPDIR=~/pip-tmp pip install --no-cache-dir -U qwen-asr qwen-asr[vllm]
13.2 Ошибка error: [Errno 18] Invalid cross-device link
При установке пакета, например, следующей командой:
pip install -U flash-attn --no-build-isolation
Может возникнуть ошибка:
Raw wheel path /home/mial/.cache/pip/wheels/3d/59/46/f282c12c73dd4bb3c2e3fe199f1a0d0f8cec06df0cccfeee27/tmpj98ktnfb/.tmp-fya5_alf/flash_attn-2.8.3-cp312-cp312-linux_x86_64.whl error: [Errno 18] Invalid cross-device link: 'flash_attn-2.8.3+cu12torch2.9cxx11abiTRUE-cp312-cp312-linux_x86_64.whl' -> '/home/mial/.cache/pip/wheels/3d/59/46/f282c12c73dd4bb3c2e3fe199f1a0d0f8cec06df0cccfeee27/tmpj98ktnfb/.tmp-fya5_alf/flash_attn-2.8.3-cp312-cp312-linux_x86_64.whl' [end of output]
Ключевой строкой в ней является «error: [Errno 18] Invalid cross-device link».
Это ошибка POSIX уровня файловой системы. Она возникает, когда операция rename() (или hardlink) пытается переместить файл между разными файловыми системами (точками монтирования).
pip скачивает или собирает wheel, используя временные директории (обычно /tmp). Затем он перемещает файлы (через rename) либо в cache (~/.cache/pip), либо в целевое окружение. Если эти директории находятся на разных файловых системах, возникает ошибка Invalid cross-device link.
Для решения этой проблемы выберите любой из способов
1) Использование диска для временных файлов:
mkdir -p ~/pip-tmp TMPDIR=~/pip-tmp pip install -U flash-attn --no-build-isolation
2) Отключить использование кеша в pip:
pip install -U flash-attn --no-cache-dir --no-build-isolation
13.3 error: externally-managed-environment
Ошибка «error: externally-managed-environment» возникает если использовать pip для установки пакетов на уровне системы, а не виртуальных окружений.
Эта ошибка не должна возникать поскольку мы используем Miniconda для создания окружений в том числе для избежания этой ошибки.
Причина ошибки в том, что если внутри окружения не найдена программа pip, то окружение пытается использовать системную pip что в конечном счёте и приводит к рассматриваемой ошибке.
Для исправления этой проблемы нужно установить pip в окружение, это делается следующей командой:
conda install pip
14. Как удалить Miniconda в Linux
14.1 Как удалить Miniconda в Debian (Kali Linux, Linux Mint, Ubuntu)
Удалите настройки оболочки, которые были добавлены для автоматической инициализации Miniconda:
conda init --reverse $SHELL
Затем выполните:
~/miniconda3/uninstall.sh --remove-caches --remove-config-files user --remove-user-data
14.2 Как удалить Miniconda в Arch Linux (Manjaro, BlackArch)
Для удаления используйте pikaur:
pikaur -R miniconda3
Связанные статьи:
- Как создавать виртуальные окружения с любой версией Python (инструкция по использованию Micromamba) (100%)
- Как запустить небольшой код Python в Bash (50%)
- Как очистить список в Python. Почему при очистке списка удаляются его копии в других переменных (50%)
- Как запустить программу из Python: как выполнить системную команду или другой скрипт Python (полное руководство) (50%)
- Как добавить префикс «b» к имени переменной в Python? (50%)
- При установке пакетов лучше указывать только главный пакет или все его зависимости? (RANDOM - 0.8%)