В чем разница между pip и conda?

Я знаю pip менеджер пакетов для пакетов Python Тем не менее, я видел установку на веб-сайте IPython использования conda установить IPython.

Могу ли я использовать pip установить IPython? Почему я должен использовать conda как другой менеджер пакетов Python, когда у меня уже есть pip?

В чем разница между pip а также conda?

17 ответов

Решение

Цитата из блога Conda:

Давно участвуя в мире python, мы все знаем о pip, easy_install и virtualenv, но эти инструменты не отвечали всем нашим конкретным требованиям. Основная проблема заключается в том, что они сосредоточены вокруг Python, пренебрегая зависимостями не-Python-библиотек, такими как HDF5, MKL, LLVM и т. Д., Которые не имеют файла setup.py в своем исходном коде, а также не устанавливают файлы на сайт Python. -пакеты

Итак, Conda - это инструмент для установки и упаковки, который стремится сделать больше, чем pip делает; обрабатывать библиотечные зависимости вне пакетов Python, а также сами пакеты Python. Конда также создает виртуальную среду, как virtualenv делает.

Таким образом, Conda следует сравнить с Buildout, возможно, еще одним инструментом, который позволяет вам выполнять задачи установки как Python, так и не Python.

Поскольку Conda вводит новый формат упаковки, вы не можете использовать pip и Конда взаимозаменяемо; pip невозможно установить формат пакета Conda. Вы можете использовать два инструмента бок о бок (установив pip с conda install pip) но они тоже не взаимодействуют.

Вот краткое изложение:

зернышко

  • Только пакеты Python.
  • Компилирует все из исходного кода. РЕДАКТИРОВАТЬ: pip теперь устанавливает бинарные колеса, если они доступны.
  • Благословенно основным сообществом Python (то есть, Python 3.4+ включает в себя код, который автоматически повышает pip).

Конда

  • Python агностик. Основное внимание в существующих пакетах уделяется Python, и действительно, сама conda написана на Python, но вы также можете иметь пакеты conda для библиотек C, или пакетов R, или чего-то еще.
  • Устанавливает двоичные файлы. Есть инструмент под названием conda build который собирает пакеты из исходного кода, но conda install Сам устанавливает вещи из уже собранных пакетов conda.
  • Внешний. Conda является менеджером пакетов Anaconda, дистрибутива Python, предоставляемого Continuum Analytics, но его можно использовать и за пределами Anaconda. Вы можете использовать его с существующей установкой Python, установив pip (хотя это не рекомендуется, если у вас нет веских причин использовать существующую установку).

В обоих случаях:

  • Написано на Python
  • Открытый исходный код (conda - BSD, а pip - MIT)

Первые два пункта conda - это то, что делает его преимуществом перед pip для многих пакетов. Поскольку pip устанавливается из исходного кода, может быть трудно установить что-либо вместе с ним, если вы не можете скомпилировать исходный код (это особенно верно в Windows, но это может быть даже в Linux, если в пакетах есть какая-то сложная библиотека C или FORTRAN). зависимостей). Конда устанавливается из бинарного файла, это означает, что кто-то (например, Continuum) уже проделал тяжелую работу по компиляции пакета, и поэтому установка проста.

Есть также некоторые отличия, если вы заинтересованы в создании собственных пакетов. Например, pip построен поверх setuptools, тогда как conda использует свой собственный формат, который имеет некоторые преимущества (например, статичность и, опять же, независимость от Python).

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

pip - менеджер пакетов, который облегчает установку, обновление и удаление пакетов python. Он также работает с виртуальными средами Python.

conda - менеджер пакетов для любого программного обеспечения (установка, обновление и удаление). Он также работает с виртуальными системными средами.

Одна из целей разработки conda состоит в том, чтобы упростить управление пакетами для всего программного стека, требуемого пользователями, из которых одна или несколько версий Python могут составлять лишь небольшую часть. Это включает в себя низкоуровневые библиотеки, такие как линейная алгебра, компиляторы, такие как mingw для Windows, редакторы, инструменты контроля версий, такие как Hg и Git, или любые другие, требующие распространения и управления.

Для управления версиями pip позволяет переключаться между несколькими средами Python и управлять ими.

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

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

Я хочу плакать, когда думаю о том, сколько времени я потерял, пытаясь скомпилировать многие из этих пакетов через pip в Windows, или отладка не удалась pip install сеансы, когда требуется компиляция.

И наконец, Continuum Analytics также размещает (бесплатный) https://binstar.org/ (теперь он называется https://repo.continuum.io/), чтобы позволить обычным разработчикам пакетов создавать свои собственные (встроенные!) Программные стеки, которые смогут использовать их пользователи-пользователи. conda install от.

Обновленный ответ за 2021 год . К сожалению, все остальные ответы относятся к 2014 году или около того и серьезно вводят в заблуждение.

пип

  • основы

  • pip - это менеджер пакетов по умолчанию для python

  • pip встроен в Python 3.0

  • Использование: python3 -m venv myenv; source myenv/bin/active; python3 -m pip install requests

  • Пакеты загружаются с pypi.org, основного общедоступного репозитория Python.

  • Он может устанавливать предварительно скомпилированные двоичные файлы (колеса), если они доступны, или исходный код (архив tar / zip).

  • Скомпилированные двоичные файлы важны, потому что многие пакеты представляют собой смешанные пакеты Python / C / other со сторонними зависимостями и сложными цепочками сборки. Они ДОЛЖНЫ распространяться как двоичные файлы, чтобы быть готовыми к использованию.

  • передовой

  • pip можно установить из любого архива, колеса или репозитория git / svn ...

  • ... которые могут быть расположены на диске, по URL-адресу HTTP или на личном сервере pypi.

  • pip install git+https://github.com/psf/requests.git@v2.25.0 например (может пригодиться для тестирования патчей).

  • pip install https://download.pytorch.org/whl/cpu/torch-1.9.0%2Bcpu-cp39-cp39-linux_x86_64.whl (это колесо - Python 3.9 в Linux).

  • при установке из исходного кода pip автоматически соберет пакет. (это не всегда возможно, попробуйте собрать TensorFlow без системы сборки Google:D)

  • двоичные колеса могут зависеть от версии Python и ОС, см. спецификацию manylinux, чтобы максимизировать переносимость.

Conda

  • Conda - это сторонний менеджер пакетов от Conda.

  • Он популяризируется anaconda, дистрибутивом Python, включающим наиболее распространенные библиотеки науки о данных, готовые к использованию.

  • Вы будете использовать conda, когда будете использовать anaconda.

  • Пакеты скачиваются с сайта conda forge .

  • Он устанавливает только предварительно скомпилированные пакеты.

  • У Conda есть свой формат пакетов. Он не использует колеса.

  • conda install установить пакет.

  • conda build для сборки / пересборки пакета.

  • conda связывает интерпретатор Python.

  • conda позволяет установить и обновить интерпретатор Python. (пип нет).

  • передовой

  • Исторически сложилось, что коммерческим аргументом conda была поддержка сборки и установки двоичных пакетов, потому что pip не очень хорошо поддерживал двоичные пакеты (до тех пор, пока колеса и спецификация manylinux2010 не были).

  • Акцент на строительстве. Пакеты Conda имеют обширный формат конфигурации и метаданные для работы с зависимостями и цепочками сборки.

  • В некоторых проектах conda используется для запуска сложных систем сборки и создания колеса, которое можно опубликовать на pypi.org и использовать с pip.

easy_install / egg

  • Только для исторической справки. НЕ ИСПОЛЬЗУЙТЕ
  • Яйцо - заброшенный формат упаковки, он использовался до середины 2010-х годов и полностью заменен колесами .
  • яйцо - это zip-архив, он содержит исходные файлы Python и / или скомпилированные библиотеки.
  • яйца используются вместе с easy_install и некоторыми ранними версиями pip.
  • easy_install был еще одним инструментом управления пакетами, который предшествовал pip и conda. он давно мертв.
  • это тоже вызвало много путаницы, как и pip vs conda:D
  • Файлы egg загружаются медленно, плохо специфицированы и зависят от ОС.

Все вышеперечисленное имеет открытый исходный код и написано на Python.

Интересный факт: единственная строго необходимая зависимость для создания интерпретатора Python - это zlib (zip-библиотека), потому что когда-то для загрузки любого следующего пакета требовалось сжатие.

Почему так много вариантов?

Хороший вопрос.

Давайте углубимся в историю Python и компьютеров. =D

Пакеты на чистом питоне всегда отлично работали с любым из этих упаковщиков. Проблемы были с пакетами не только для Python.

Большая часть кода в мире зависит от C. Это верно для интерпретатора Python, написанного на C. Это верно для многочисленных пакетов Python, которые обычно обертывают библиотеки C или переплетаются с кодом python / C / C++ / другим кодом.

Все, что связано с SSL, сжатием, графическим интерфейсом пользователя (подсистемы X11 и Windows), математическими библиотеками, графическим процессором, CUDA и т. Д., Обычно связано с некоторым C по цепочке.

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

Первоначально python мог нормально распространять библиотеки на чистом питоне, но распространение двоичных библиотек было мало. Примерно в 2010 году вы получите много ошибок, пытаясь использовать numpy или cassandra. Он загрузил исходный код и не смог скомпилировать из-за отсутствия зависимостей. Он загрузил предварительно созданные двоичные файлы и не смог загрузить с помощью SEGFAULT из-за нацеливания на другую ОС. Это был кошмар.

С 2012 года в этом разбирались по пипу и колесам. Добавьте еще 5 лет, чтобы люди корректировали свои сборки и инструменты для создания стабильных дистрибутивов Linux (большинство разработчиков полагаются на / usr / bin / python). К сожалению, проблемы с бинарными пакетами распространились до конца 2010-х годов, потому что debian / centos оставался на устаревшей версии python+ pip с ошибками и не мог использовать новые колеса. (первая команда для запуска - pip install --upgrade pip setuptools на устаревших системах)

Параллельно Conda работала над собственным решением. Anaconda была специально предназначена для упрощения использования библиотек для анализа данных (наука о данных = C и C++ везде), поэтому conda была специально предназначена для создания и распространения двоичных пакетов как части Anaconda.

Если вы установите какой-либо пакет с pip install xxxв настоящее время это просто работает. Это рекомендуемый способ установки пакетов, и он встроен в текущие версии Python.

В заключение сделаем заметку о будущем. Мир развивается, и всегда возникают новые проблемы. Если вам интересно, последняя тема разговоров касается создания и упаковки приложений CUDA, интеграция которых становится все более и более проблематичной. В основном это работает для конечных пользователей из коробки (просто установите pip), но если вы когда-нибудь будете работать над системой сборки, как я, вы увидите загадочные ужасы, стоящие за ней:D

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

conda install -n testenv pip
source activate testenv
pip <pip command>

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

Цитата из статьи Conda для Data Science на сайте континуума:

Конда против пипса

Программисты Python, вероятно, знакомы с pip для загрузки пакетов из PyPI и управления их требованиями. Хотя conda и pip являются менеджерами пакетов, они очень разные:

  • Pip специфичен для пакетов Python, а conda не зависит от языка, что означает, что мы можем использовать conda для управления пакетами из любого языка. Pip компилирует из исходного кода, а conda устанавливает двоичные файлы, что устраняет бремя компиляции.
  • Conda создает среды, независимые от языка, тогда как pip полагается на virtualenv для управления только средами Python. Хотя рекомендуется всегда использовать пакеты conda, conda также включает в себя pip, поэтому вам не нужно выбирать между ними. Например, чтобы установить пакет python, который не имеет пакета conda, но доступен через pip, просто запустите, например:
conda install pip
pip install gensim

pip это менеджер пакетов.

conda одновременно является менеджером пакетов и менеджером среды.

Деталь:

Ссылки

Цитата из Конды: мифы и заблуждения (подробное описание):

...

Миф № 3: Конда и Пип являются прямыми конкурентами

Реальность: Conda и pip служат различным целям и напрямую конкурируют в небольшом подмножестве задач, а именно: установка пакетов Python в изолированных средах.

Pip, что означает P ip I nstalls P ackages, является официально санкционированным менеджером пакетов Python и чаще всего используется для установки пакетов, опубликованных в индексе пакетов Python (PyPI). Как pip, так и PyPI управляются и поддерживаются Python Packaging Authority (PyPA).

Короче говоря, pip - менеджер общего назначения для пакетов Python; conda - независимый от языка кроссплатформенный менеджер среды. Для пользователя наиболее существенное различие, вероятно, заключается в следующем: pip устанавливает пакеты Python в любой среде; Конда устанавливает любой пакет в среде Конда. Если все, что вы делаете, это устанавливаете пакеты Python в изолированной среде, то conda и pip+virtualenv в основном взаимозаменяемы, по модулю некоторая разница в обработке зависимостей и доступности пакетов. Под изолированной средой я подразумеваю conda-env или virtualenv, в которых вы можете устанавливать пакеты, не изменяя вашу системную установку Python.

Даже если оставить в стороне миф №2, если мы сосредоточимся только на установке пакетов Python, conda и pip предназначены для разных аудиторий и для разных целей. Если вы хотите, скажем, управлять пакетами Python в рамках существующей системной установки Python, conda не может вам помочь: она может устанавливать пакеты только в средах conda. Если вы хотите, скажем, работать со многими пакетами Python, которые опираются на внешние зависимости (NumPy, SciPy и Matplotlib - типичные примеры), при отслеживании этих зависимостей осмысленным образом, pip не может вам помочь: по замыслу, он управляет пакетами Python и только пакетами Python.

Conda и pip - не конкуренты, а инструменты, ориентированные на разные группы пользователей и модели использования.

Для пользователей WINDOWS

Ситуация со "стандартными" упаковочными инструментами в последнее время улучшается:

  • на самом Pypi, по состоянию на сентябрь, сейчас 48% пакетов колес. 11-е 2015 (по сравнению с 38% в мае 2015 года, 24% в сентябре 2014 года),

  • формат колеса теперь поддерживается "из коробки" в последней версии Python 2.7.9,

"Стандартные"+"твики" упаковки инструментов улучшаются также:

  • Вы можете найти почти все научные пакеты по формату колеса на http://www.lfd.uci.edu/~gohlke/pythonlibs,

  • проект mingwpy может однажды принести пользователям Windows пакет "компиляции", позволяющий при необходимости устанавливать все из исходного кода.

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

(кроме того, спецификация зависимости множественных усилий в стандартной системе колес и в системе conda или сборке не очень питонна, было бы неплохо, если бы все эти "основные" методы упаковки могли бы сходиться через своего рода PEP)

(ОБНОВЛЕНИЕ 2022 г.) Этот ответ был получен из приведенного выше ответа пользователя @user5994461.

Вы можете использовать pip для управления пакетами. Pip является официальным встроенным менеджером пакетов для Python.org, начиная с Python 3.

pip не является менеджером виртуальной среды.

точка

  • основы

  • pip — менеджер пакетов по умолчанию для python.

  • pip встроен в Python 3.0

  • Использование:python3 -m venv myenv; source myenv/bin/activate; python3 -m pip install requests

  • Пакеты загружаются с pypi.org, официального общедоступного репозитория Python.

  • Он может установить предварительно скомпилированные двоичные файлы (колеса), если они доступны, или исходный код (архив tar/zip).

  • Скомпилированные двоичные файлы важны, потому что многие пакеты представляют собой смесь Python/C/другого со сторонними зависимостями и сложными цепочками сборки. Они ДОЛЖНЫ распространяться в виде двоичных файлов, чтобы быть готовыми к использованию.

  • передовой

  • pip можно установить из любого архива, колеса или репозитория git/svn...

  • ... который может быть расположен на диске, по URL-адресу HTTP или на личном сервере pypi.

  • pip install git+https://github.com/psf/requests.git@v2.25.0например (может быть полезно для тестирования патчей на ветке).

  • pip install https://download.pytorch.org/whl/cpu/torch-1.9.0%2Bcpu-cp39-cp39-linux_x86_64.whl(это колесо — Python 3.9 в Linux).

  • при установке из исходников pip автоматически соберет пакет. (это не всегда возможно, попробуйте собрать TensorFlow без системы сборки Google:D)

  • двоичные колеса могут зависеть от версии Python и ОС, см. многие спецификации Linux , чтобы максимизировать переносимость.

конда

  • conda — это менеджер среды с открытым исходным кодом И менеджер пакетов, поддерживаемый сообществом с открытым исходным кодом. Он отделен от Anaconda, Inc. и не требует коммерческой лицензии для использования.

  • conda также входит в состав Anaconda Navigator, популярного коммерческого дистрибутива Python от Anaconda, Inc. ( Anaconda), который включает наиболее распространенные библиотеки для обработки и анализа данных и готовые к использованию библиотеки Python для разработчиков.

  • Вы будете использовать conda при использовании графического интерфейса Anaconda Navigator.

  • Пакеты можно загрузить с conda-forge, репозитория anaconda 4 и других общедоступных и частных «каналов» пакетов conda (также известных как репозитории).

  • Он устанавливает только предварительно скомпилированные пакеты.

  • conda имеет собственный формат пакета. Он не использует колеса.

  • conda installустановить пакет.

  • conda buildдля сборки пакета.

  • conda может создать интерпретатор Python (и другие пакеты C, от которых он зависит). Вот как интерпретатор создается и комплектуется для Anaconda Navigator.

  • conda позволяет устанавливать и обновлять интерпретатор Python (pip — нет).

  • передовой

  • Исторически сложилось так, что одним из пунктов продажи conda была поддержка сборки и установки бинарных пакетов, потому что pip не очень хорошо поддерживал бинарные пакеты (до тех пор, пока не появились колеса и спецификация manylinux2010).

  • Акцент на создании пакетов. conda имеет обширные настройки сборки и хранит обширные метаданные для работы с зависимостями и создания цепочек.

  • Некоторые проекты используют conda для запуска сложных систем сборки и создания колеса, которое публикуется на pypi.org для pip.

  • conda уделяет особое внимание созданию и управлению виртуальными средами. conda — это менеджер виртуальной среды, не зависящий от языка программирования. conda может устанавливать и управлять другими менеджерами пакетов, такими как npm, pip и другие языковые менеджеры пакетов.

  • Могу ли я использовать пакеты Anaconda Navigator в коммерческих целях? В новой формулировке говорится, что использование отдельными любителями, студентами, университетами, некоммерческими организациями или предприятиями с менее чем 200 сотрудниками разрешено, а любое другое использование считается коммерческим и, следовательно, требует деловых отношений с Anaconda. (по состоянию на 28 октября 2020 г.)

  • ЕСЛИ вы являетесь крупной организацией разработчиков, т. е. более 200 сотрудников, вам НЕ разрешается использовать Anaconda или пакеты из репозитория Anaconda для коммерческого использования, если вы не приобрели лицензию.

  • Для извлечения и использования пакетов (должным образом открытых) из репозитория conda-forge не требуются коммерческие лицензии от Anaconda, Inc. Разработчики могут создавать свои собственные пакеты conda, используя инструменты упаковки, предоставляемые в инфраструктуре conda-forge.

easy_install/яйцо

  • Только для исторической справки. НЕ ИСПОЛЬЗОВАТЬ
  • egg — это заброшенный формат упаковки, он использовался до середины 2010-х годов и полностью заменен колесами .
  • яйцо представляет собой zip-архив, содержащий исходные файлы Python и/или скомпилированные библиотеки.
  • яйца используются с первыми выпусками pip.
  • easy_installбыл еще одним менеджером пакетов, который предшествовал pip и conda. Он был удален в setuptools v58.3 (2021 год).
  • это тоже вызвало много путаницы, как пип против конды:D
  • egg файлы загружаются медленно, плохо определены и специфичны для ОС.
  • Каждое яйцо было установлено в отдельном каталоге,import mypackageнадо бы поискатьmypackage.pyпотенциально в сотнях каталогов (сколько библиотек было установлено?). Это было медленно и не дружелюбно к кешу файловой системы.

Забавный факт: единственной строго необходимой зависимостью для сборки интерпретатора Python является zlib (библиотека zip), потому что для загрузки большего количества пакетов необходимо сжатие. Пакеты с яйцами и колесами представляют собой zip-файлы.

Почему так много вариантов?

Хороший вопрос.

Давайте углубимся в историю Python и компьютеров. = Д

Чистые пакеты Python всегда отлично работали с любым из этих упаковщиков. Проблемы были не только с пакетами Python.

Большая часть кода в мире зависит от C. Это верно для интерпретатора Python, написанного на C. Это верно для многочисленных пакетов Python, которые являются оболочками Python для библиотек C или проектов, смешивающих код Python/C/C++.

Все, что связано с SSL, сжатием, графическим интерфейсом (подсистемы X11 и Windows), математическими библиотеками, графическим процессором, CUDA и т. д., обычно связано с некоторым кодом C.

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

Первоначально python мог прекрасно распространять библиотеки на чистом Python, но распространение бинарных библиотек практически не поддерживалось. Примерно в 2010 году вы получите много ошибок при попытке использоватьnumpyилиcassandra. Он загрузил исходный код и не смог скомпилировать из-за отсутствующих зависимостей. Или он загрузил готовый пакет (может быть, яйцо в то время), и он вылетел с SEGFAULT при использовании, потому что он был собран для другой системы. Это был кошмар.

Это было решено с помощью pip and Wheels с 2012 года. Затем подождите много лет, пока люди не примут эти инструменты и пока они не распространятся на стабильные дистрибутивы Linux (многие разработчики полагаются на/usr/bin/python). Проблемы с бинарными пакетами распространились до конца 2010-х годов.

Для справки, поэтому первая команда для запускаpython3 -m venv myvenv && source myvenv/bin/activate && pip install --upgrade pip setuptoolsв устаревших системах, потому что ОС поставляется со старым python + pip 5-летней давности, который содержит ошибки и не может распознать текущий формат пакета.

Continuum Analytics (позже переименованная в Anaconda, Inc.) параллельно работала над собственным решением (выпущенным как Anaconda Navigator). Anaconda Navigator был специально предназначен для упрощения использования готовых библиотек для обработки данных (наука о данных везде = C и C++), поэтому они придумали менеджер пакетов, специально предназначенный для создания и распространения бинарных пакетов, и создали его в диспетчере среды, conda.

Если вы устанавливаете какой-либо пакет с pip install xxxв настоящее время это обычно просто работает. pip — рекомендуемый способ установки пакетов, встроенных в текущие версии Python.

Чтобы ответить на исходный вопрос,
для установки пакетов PIP и Conda - это разные способы выполнить одно и то же. Оба являются стандартными приложениями для установки пакетов. Основное отличие - это источник файлов пакета.

  • PIP / PyPI будет иметь больше "экспериментальных" пакетов или более новые, менее распространенные версии пакетов.
  • Conda обычно имеет более устоявшиеся пакеты или версии.

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

  • Воссоздать среду будет сложнее
  • Исправить несовместимость пакетов становится все сложнее

Лучше всего выбрать одно приложение, PIP или Conda, для установки пакетов и использовать это приложение для установки любых пакетов, которые вам нужны. Однако есть много исключений или причин по-прежнему использовать pip из среды conda, и наоборот. Например:

  • Когда есть нужные вам пакеты, которые существуют только в одном, а в другом их нет.
  • Вам нужна определенная версия, которая доступна только в одной среде

Могу ли я использовать pip для установки iPython?

Конечно, оба (первый подход на странице)

pip install ipython

и (третий подход, второй conda)

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

pip install .

Официально рекомендованные способы установки.

Почему я должен использовать conda как еще один менеджер пакетов python, когда у меня уже есть pip?

Как сказано здесь:

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

Конда превосходит пип в ( YMMV)

  • проекты, которые используют инструменты не Python
  • делиться с коллегами
  • переключение между версиями
  • переключение между проектами с разными версиями библиотеки

В чем разница между pip и conda?

На это широко отвечают все остальные.

В то время как другие ответы подчеркивают цели и преимущества pip/conda, также может быть интересно указать на их проблемы с точки зрения упаковки.


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


Conda, с другой стороны, работает на уровне sysroot и может использовать библиотеки независимо от языка. Хотя это отличная идея, на практике упаковка conda имеет множество проблем. ИМХО это связано не с ошибкой в ​​принципе, а с реализацией конды.

Conda следует модели упаковки, при которой настоящие авторы проекта не публикуют информацию на основном канале, а вместо этого упаковка выполняется с использованием «исходного сырья для рецептов», управляемого третьей стороной. Это означает, что обновления необходимо выполнять вручную, а новые или менее популярные пакеты часто будут недоступны. Многие пакеты не обновляются регулярно, поэтому сборки могут отсутствовать, а головная версия может оказаться устаревшей. Кроме того, упаковка третьих сторон в некоторых случаях может привести к ухудшению качества (например, к проблемам безопасности ABI). Именно авторы оригинала лучше всех знают, как правильно собрать/настроить свой пакет, а не третьи лица.

Conda также приводит к большому дублированию пакетов из-за отсутствия совместимости с пакетами стиля PyPA. В принципе это кажется ненужным — почему бы conda просто не предоставить уровень совместимости, который позволил бы указать зависимость от пакета PyPA? Все метаданные будут там, просто с использованием других соглашений. Но на самом деле conda этого не делает, и в течение длительного времени не было никаких реальных предложений изменить это. Однако это может значительно сократить затраты на обслуживание пакетов, написанных на чистом Python, и быть полезным для некоторых проектов расширений, которые потребуют очень значительных усилий для пакета conda.

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

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

Виртуальные среды — это давно известная концепция, которая одинаково доступна в мире PyPA. В настоящее время pip также предоставляет полный преобразователь зависимостей.

pip только для Python

conda только для Anaconda + другие научные пакеты, такие как зависимости R и т. д. Не всем нужна Anaconda, которая уже поставляется с Python. Anaconda в основном для тех, кто занимается машинным обучением / глубоким обучением и т. Д. Казуальный разработчик Python не будет запускать Anaconda на своем ноутбуке.

зернышко

  • Только пакеты Python. Компилирует все из исходного кода. РЕДАКТИРОВАТЬ: pip теперь устанавливает бинарные колеса, если они доступны.
  • Благословенно основным сообществом Python (то есть, Python 3.4+ включает в себя код, который автоматически повышает pip).

Конда

Python агностик. Основное внимание в существующих пакетах уделяется Python, и действительно, сама conda написана на Python, но вы также можете иметь пакеты conda для библиотек C, или пакетов R, или чего-то еще.

Устанавливает двоичные файлы. Существует инструмент под названием conda build, который собирает пакеты из исходного кода, но сама conda install устанавливает вещи из уже собранных пакетов conda.

Внешний. Conda является менеджером пакетов Anaconda, дистрибутива Python, предоставляемого Continuum Analytics, но его можно использовать и за пределами Anaconda. Вы можете использовать его с существующей установкой Python, установив pip (хотя это не рекомендуется, если у вас нет веских причин использовать существующую установку).

В обоих случаях:

  • Написано на Python

  • Открытый исходный код (conda - BSD, а pip - MIT)

Первые два пункта conda - это то, что делает его преимуществом перед pip для многих пакетов. Поскольку pip устанавливается из исходного кода, может быть трудно установить что-либо вместе с ним, если вы не можете скомпилировать исходный код (это особенно верно в Windows, но это может быть даже в Linux, если в пакетах есть какая-то сложная библиотека C или FORTRAN). зависимостей). Конда устанавливается из бинарного файла, это означает, что кто-то (например, Continuum) уже проделал тяжелую работу по компиляции пакета, и поэтому установка проста.

С 2021 года время разрешения зависимости становится неприемлемым. Я перехожу на мамбу, чтобы управлять conda окружающей среды.

Если вы используете conda, обязательно дайте mamba попытка.

Возможно, я обнаружил еще одно отличие незначительного характера. У меня есть среда Python под /usr скорее, чем /home или что угодно. Для того, чтобы установить на него, я должен был бы использовать sudo install pip, Для меня нежелательный побочный эффект sudo install pip немного отличался от того, что широко освещалось в других местах: после этого мне пришлось бежать python с sudo для того, чтобы импортировать любой из sudo-установленные пакеты. Я отказался от этого и в конце концов обнаружил, что могу использовать sudo conda установить пакеты в среду под /usr который затем импортируется нормально без необходимости sudo разрешение на python, Я даже использовал sudo conda починить сломанное pip вместо того, чтобы использовать sudo pip uninstall pip или же sudo pip --upgrade install pip,

Другие вопросы по тегам