Что такое Анаконда и зачем она мне?

При работе с Python в разных проектах в одной системе проблема управления пакетами и версиями может стать очень неприятной. Для некоторых проектов может потребоваться более старая версия Python, например 2.7 (вам обязательно нужно обновить), по сравнению с другой, для которой требуется 3.7. Возможно, разные пакеты зависят от разных версий других пакетов, и вы нарушаете зависимости в местах, о которых даже не знаете, обновляя пакеты.

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

Прежде всего, я не говорю, что Anaconda - лучший инструмент для того или иного, он идеален. Есть много других, таких как virtualenv, virtualenvwrapper, pyenv, и т. Д. (Этот список на самом деле можно продолжить), и если вам лучше их использовать это прекрасно. Однако я заметил, что наиболее часто используемым решением является Anaconda, особенно в области науки о данных и машинного обучения.

Что оно делает?

Итак, вы, скорее всего, знакомы с использованием pip в качестве диспетчера пакетов. Вы просто устанавливаете пакеты из командной строки с помощью pip install <package-name>. Это добавляет пакет к вашей установке Python по умолчанию по определенному пути на вашем компьютере (этот путь: <Path-to-Python>/site-packages/).

Anaconda решает эту проблему, делая две вещи:

  • создание сред для изоляции проектов друг от друга
  • используя conda install вместо pip

(Сейчас вы можете подумать: «Но я люблю pip, и это было частью моей жизни так долго, что я не могу просто отказаться от этого!» привязанности к диспетчеру пакетов, это совсем не проблема, и что вы найдете решение всех своих проблем в следующем разделе Использование pip внутри среды.)

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

Создание среды

После установки Anaconda из замечательного руководства на их веб-сайте вы можете запустить приглашение Anaconda:

  • Windows: нажмите Windows Key - ›введите Anaconda Prompt -› нажмите Enter
  • Mac: нажмите CMD + SPACE - ›введите Terminal -› нажмите Enter.

Теперь вы можете проверить, все ли работает нормально, набрав conda --version, который отображает текущую версию Anaconda (для получения дополнительной информации, которая может вас запутать вначале, введите conda info). На момент написания этой статьи он выводит conda 4.6.11 на моей машине, что для вас может быть выше.

Отлично, теперь вы готовы к созданию своей первой среды Anaconda. Итак, мы можем создать среду с помощью команды conda create -n <env-name>. В этом примере я буду использовать среду под названием test-env, но вы должны назвать ее как-нибудь более полезное, связанное с вашим проектом.

conda create -n test-env

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

  • версия ›= 4.6 .: conda activate test-env
  • Windows: версия ‹4.6: activate test-env
  • Mac: версия ‹4.6: source activate test-env

Теперь вы поймете, что ваша командная строка будет содержать имя вашей среды в скобках в начале, например:

(testEnv) C:\Work>

Это довольно удобно, потому что вы всегда знаете, в какой среде находитесь в данный момент, и не запутаетесь. Однако вы также всегда можете перечислить все созданные вами среды и отметить текущую активную среду звездочкой (*). Для этого просто введите conda env list.

Если вы хотите выйти из среды, вы можете просто ввести следующую команду в зависимости от вашего компьютера:

  • версия ›= 4.6 .: conda deactivate
  • Windows: версия ‹4.6: deactivate
  • Mac: версия ‹4.6: source deactivate

Вы заметите, что имя вашей среды больше не отображается в скобках в начале командной строки.

Ранее я упоминал, что вы можете управлять разными версиями Python в разных средах. Это также можно сделать очень просто, указав версию при создании среды. Если мы хотим создать среду, в которой мы будем использовать версию python 2.7, мы можем ввести:

conda create -n <env-name> python=2.7

Для сравнения мы можем создать среду с версией 3.7 с:

conda create -n <env-name python=3.7

Таким образом, вы можете легко переключаться между разными версиями python в разных проектах и ​​всегда обеспечивать совместимость.

Наконец, если мы хотим удалить среду с нашей машины (включая все пакеты, которые мы установили внутри среды), мы можем использовать

conda env remove --name <env-name>

Установка пакетов с помощью conda

Если вы привыкли к pip, вы будете чувствовать себя как дома, потому что теперь вы можете просто устанавливать пакеты с conda, используя:

conda install <package-name>

Это проверит, доступен ли пакет, и позволит вам установить последнюю версию на ваш компьютер. Замечательно то, что он установит его только в среду, в которой вы сейчас находитесь. Чтобы вывести список всех пакетов в текущей среде, просто введите conda list.

Вы можете не знать, доступен ли определенный пакет в репозитории Anaconda, поэтому вы можете искать доступные пакеты с помощью conda search <package-name>. Затем вы можете проверить, доступен ли он, а затем установить его, если хотите (если он недоступен, вы можете взглянуть на следующий раздел Использование pip внутри среды ).

Также возможно (и на самом деле рекомендуется) установить несколько пакетов в одной команде с conda install <package-1> <package-2> <package-3>. Итак, в качестве примера, если мы хотим начать заниматься наукой о данных, мы могли бы установить некоторые базовые пакеты, такие как numpy, pandas и matplotlib, например:

conda install numpy pandas matplotlib

Иногда, конечно, будет доступна более новая версия для пакетов, поэтому мы можем просто использовать команду conda update <package-name> для обновления одного пакета (это также работает для нашей версии Anaconda с conda update conda).

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

conda remove <package-name>

Использование pip внутри среды

Я упоминал ранее, что многие люди привыкли устанавливать пакеты в python с помощью pip. И на самом деле некоторые пакеты доступны только через pip. Хотя рекомендуется сначала попытаться установить пакеты с помощью conda, мы можем не найти нужный нам пакет (конечно, мы сначала попробовали conda search <package-name, чтобы убедиться, что он недоступен). В этом случае может быть полезно использовать pip. Но как это работает в нашей среде?

Если бы только у нас был инструмент для установки чего-либо в нашу среду… Ой, подождите, conda делает именно это. Нам нужно только установить pip внутри нашей среды, используя conda install pip. Если мы затем используем pip install <package-name>, он установит пакет внутри нашей текущей среды. Это очень полезно для пакетов, которых нет в conda.

Вы можете спросить, как эта установка pip мешает базовой установке на вашем компьютере, и ответ прост: если мы находимся внутри среды conda, она всегда будет пытаться использовать pip версия окружения. Если в среде нет версии pip, она попытается вернуться к другим версиям, установленным на вашем компьютере. В этом можно убедиться, если мы создадим новую среду и установим в нее pip. Если мы затем наберем pip list, мы не увидим установленных пакетов (на самом деле может быть несколько предустановленных в зависимости от вашей конфигурации.

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

conda create -n <env-name> pip

Таким образом создается новая среда и непосредственно устанавливается pip, поэтому, когда мы используем его внутри среды, он автоматически использует правильную версию pip (это возможно с любым другим package, и даже позволяет использовать несколько пакетов).

Резюме

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

Конечно, Anaconda - это гораздо больше, и многие темы здесь не обсуждаются (но, возможно, в более позднем посте) для простоты. Если у вас есть проблемы с описанными шагами или вопросы / предложения для будущих статей на более сложные темы, не стесняйтесь комментировать эту статью или напишите мне в Twitter @stefanjblos. Спасибо за чтение и удачного дня!