Настройка минималистичной среды Python с нуля

Miniconda - это минимальный установщик conda, включающий только Python, conda и его зависимости. Miniconda позволяет создавать настраиваемые среды, устанавливая дополнительные пакеты из тысяч дополнительных пакетов. Вы можете создавать отдельные среды для каждого проекта и легко делиться своей средой с другими для легкой воспроизводимости. С помощью conda вы можете создать среду на своем локальном компьютере и легко скопировать ее на большие общие высокопроизводительные компьютеры (HPC).

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

Содержание

Установка

Для начала скачайте установщик Miniconda для своей системы. Скопируйте сценарий установщика с помощью wget или cURL. Вот пример использования wget для копирования 64-разрядной программы установки Linux в текущий рабочий каталог. Флаг -O переименовывает файл в miniconda.sh.

После копирования запустите сценарий установщика и следуйте инструкциям на экране.

bash miniconda.sh

Вам будет предложено:

  1. Примите условия лицензии.
  2. Выберите место для установки.
    - $HOME - это расположение по умолчанию, но вы можете выбрать любое место.
    - Если вы выполняете установку на общий компьютер с ограниченным $HOME пространством, вам следует выбрать другое расположение.
  3. Инициализируйте Miniconda.
    - «Да» обновит переменную $PATH в вашем .bashrc файле. Я рекомендую этот вариант.
    - «Нет» требует, чтобы вы обновляли $PATH вручную:
    export PATH=”$HOME/miniconda/bin:$PATH”
  4. Перезагрузите терминал или создайте свой .bashrc файл, чтобы изменения вступили в силу.

Основы

Теперь, когда conda установлена, мы можем приступить к изучению. Первая команда, которую нужно попробовать, - это conda info. Это отображает информацию об установке conda, такую ​​как место установки, где расположены среды, ваша версия conda и множество другой информации.

Вы можете отображать только свое окружение с conda info --envs. Обратите внимание, что conda env list дает тот же результат. Сначала вы увидите только base среду. Сюда будут устанавливаться пакеты, если вы сначала не активируете среду или не укажете явно, куда установить пакет.

Вот пример вывода с двумя средами: base и test. Название среды находится слева, а местоположение - справа. * указывает текущую активную среду.

Установить пакеты

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

Вот как установить NumPy:

conda install numpy

Перед началом установки он всегда запрашивает, какие зависимости будут установлены, а какие пакеты будут обновлены или понижены. Это позволяет узнать, хотите вы установить или нет.

Вам не нужно устанавливать по одному пакету за раз. Вместо этого вы можете указать сразу несколько пакетов.

conda install xarray netcdf4

Пакеты загружаются из удаленных каналов, которые представляют собой URL-адреса каталогов, содержащих пакеты. Это важно, потому что не все пакеты находятся в канале по умолчанию. Вы можете указать разные каналы с помощью флага -c. В этом примере я устанавливаю NumPy из канала conda-forge, управляемого сообществом.

conda install numpy -n base -c conda-forge

Флаг -n указывает, в какой среде будет установлен пакет. Без указания этого флага пакет будет установлен в активной среде. Тем не менее, я думаю, что было бы неплохо сказать здесь прямо.

Список пакетов

Вы можете перечислить все установленные на данный момент пакеты следующим образом:

conda list

Удалить пакет

Удалить пакет так же просто, как и установить. Вот пример удаления пакета.

conda remove numpy -n base -c conda-forge

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

Ошибка при установке или удалении пакетов?

Если вы получаете сообщение об ошибке при установке пакета, вы можете попробовать две вещи:

  1. Обновите conda: conda update -n base -c defaults conda
    Обратите внимание на использование флагов -n и -c для указания среды и канала.
  2. Установить или удалить из другого канала. Лучше всего удалить пакет из канала, из которого вы установили.

У Conda-forge обычно самые последние версии. Вы можете установить его из канала conda-forge следующим образом:

conda install numpy -n base -c conda-forge

или удалите пакет, установленный из conda-forge, следующим образом:

conda remove numpy -n base -c conda-forge

Создать настраиваемую среду

Некоторые люди предпочитают иметь разную среду для каждого проекта или другую среду для конкретной задачи. Например, возможно, один предназначен исключительно для машинного обучения, а другой - специально для регистрации данных с помощью xESMF.

Другой способ использования сред - иметь одну чистую базовую среду и отдельную среду разработки, чтобы гарантировать отсутствие конфликтов при добавлении нового пакета.

Как бы вы ни использовали среды, вы создаете их одинаково. Вот как создать новую среду с именем myenv и использовать Python версии 3.7.

conda create --name myenv python=3.7

Обратите внимание на = по сравнению с == при указании версии Python:

  • python=3.7 сообщает conda использовать последнюю версию в дереве Python 3.7. Например, если последняя версия Python 3.7.6, то эта версия будет установлена.
  • python==3.7 сообщает conda использовать именно эту версию, Python 3.7.

Вы можете активировать среду, когда захотите использовать ее с:

source activate myenv

Затем вы можете установить пакеты, как и раньше, и указать среду (-n) и канал (-c).

conda install numpy -n myenv -c conda-forge

Когда вы закончите, вы можете деактивировать среду следующим образом:

conda deactivate

Если вы хотите скопировать одну из ваших существующих сред, возможно, чтобы проверить, как ведет себя новый пакет, вы можете передать флаг --clone при его создании.

conda create --clone myenv --name myenv2

Это скопирует все пакеты, установленные в myenv, в myenv2. Обратите внимание, что это копирует пакеты; он их не разделяет. Другими словами, удаление одной среды не влияет на другую.

Клонирование базовой среды аналогично клонированию любой другой среды.

conda create --clone base --name baseclone

Если вам нужно удалить среду, вы можете сделать это следующим образом:

conda env remove --name baseclone

Это удалит базовый клон и содержащиеся в нем пакеты.

Список сред

Помните: если вы когда-нибудь забудете, какие среды вы создали, вы всегда можете отобразить их с помощью conda env list.

Используйте среду с JupyterLab

Вы не можете сразу использовать среду с JupyterLab. Это требует небольшой настройки. Во-первых, вам нужно установить JupyterLab. Вы можете установить JupyterLab с conda install jupyterlab -c conda-forge.

Затем следуйте этим инструкциям, чтобы превратить среду в ядро, чтобы вы могли использовать его в записной книжке Jupyter.

  1. Активируйте среду: source activate myEnv.
  2. Установите ipykernel: conda install ipykernel.
  3. Выполните эту команду: python -m ipykernel install --user --name myEnv --display-name “my_environment”.

Здесь --name указывает имя среды, а --display-name - имя ядра, которое будет отображаться в JupyterLab. После запуска JupyterLab вы увидите my_envionrment как параметр ядра. При выборе этого варианта команды будут запускаться в среде myEnv.

Перенести среду на новый компьютер

Допустим, у вас есть среда, с которой вы работаете на своем ноутбуке, и вы хотите перенести ту же среду на HPC. Вместо того, чтобы тратить время на установку каждого пакета вручную, вы можете создать его из файла среды.

Для этого вам сначала нужно создать свой environment.yml файл из окружения на вашем портативном компьютере:

conda env export --name myEnv > environment.yml

Это экспортирует среду myEnv в файл с именем environment.yml. Вы можете либо указать среду непосредственно с помощью флага имени, либо сначала активировать среду, а затем удалить часть --name myEnv: conda env export> environment.yml. Вот пример файла environment.yml.

Теперь вы можете переместить environment.yml файл на свой HPC с помощью scp. Затем, после установки conda, вы можете создать новую среду из файла, подобного этому:

conda env create --file environment.yml

Это загрузит и установит все пакеты и их зависимости. Имя указывать не нужно, поскольку оно уже объявлено в environment.yml.

Исправьте и очистите вашу среду

Вернуться к предыдущей версии

Мы должны помнить, что Python является бесплатным и открытым исходным кодом, а пакеты принадлежат сообществу. Иногда, когда мы устанавливаем пакет, он не работает с уже установленными пакетами. К счастью, у conda есть память, и мы можем вернуться к предыдущей версии нашей среды.

В нем будут перечислены все исправления и то, что было изменено.

conda list --revisions

Используя номер (rev), мы можем вернуться к предыдущей версии следующим образом:

conda install --revision 0

Теперь среда будет такой же, как (rev 0).

Вот пример списка ревизий. Здесь отображаются пакеты, которые установлены и удалены с помощью + и - соответственно. Изменения версии и канала обозначаются ->.

Удалить кешированные архивы пакетов

Чем больше окружений вы создадите, тем больше архивов вы получите. Вы можете удалить все эти ненужные архивы следующим образом:

conda clean --tarballs

Измените файл condarc

Теперь, когда вы знаете, как использовать conda, последняя тема, которую я хочу затронуть, - это то, как изменить ваш .condarc файл. Это полезно, если, например, вы предпочитаете загружать файлы с определенного канала, такого как conda-forge. Затем вы можете добавить conda-forge в список каналов по умолчанию для поиска.

Например, вы можете добавить канал conda-forge в свой .condarc файл следующим образом:

conda config --append channels conda-forge

Последние мысли

В этой статье представлена ​​большая часть того, что вам нужно знать, чтобы использовать conda для управления средами. Каждая команда имеет больше флагов, чем те, которые я обсуждал, которые вы найдете в документации.

В документации также есть удобная шпаргалка, в которой описаны некоторые общие команды.

Преимущество использования Miniconda заключается в возможности перемещать среды между компьютерами. Как человек, работающий на нескольких машинах, я считаю, что Miniconda упростила перемещение сред.

Помимо переноса среды на новый компьютер, я также могу передать файл среды кому-нибудь еще, когда я делюсь проектом. Это гарантирует, что среда будет стабильной и что код будет работать должным образом для кого-то еще, что очень важно для воспроизводимости.