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

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

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

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

Ответ 1

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

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

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

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

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

С момента написания этого ответа Анаконда опубликовала новую страницу "Понимание Конды и Пипа", которая также подтверждает это:

Это подчеркивает ключевое различие между conda и pip. Pip устанавливает пакеты Python, тогда как conda устанавливает пакеты, которые могут содержать программное обеспечение, написанное на любом языке. Например, перед использованием pip необходимо установить интерпретатор Python через менеджер системных пакетов или загрузив и запустив установщик. Conda, с другой стороны, может устанавливать пакеты Python, а также интерпретатор Python напрямую.

и далее

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

Ответ 2

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

пип

  • Только пакеты Python.
  • Скомпилирует все из источника. EDIT: pip теперь устанавливает двоичные диски, если они доступны.
  • Благословенное ядро ​​сообщества Python (то есть, Python 3.4+ включает код, который автоматически увеличивает пипс).

Конда

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

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

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

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

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

Ответ 3

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

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

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

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

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

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

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

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

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

Ответ 4

Чтобы не путать вас дальше, но вы также можете использовать pip в своей среде conda, которая проверяет общие комментарии менеджеров по сравнению с python выше.

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

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

Ответ 5

Цитата из статьи Конда для науки о науках на веб-сайте континуума:

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

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

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

Ответ 6

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

...

Миф № 3: Конда и пип - прямые конкуренты

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

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

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

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

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

Ответ 7

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

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

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

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

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

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

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

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

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

Ответ 8

pip предназначен только для Python

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

Ответ 9

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

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

pip install ipython

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

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

pip install .

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

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

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

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

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

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

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

Об этом подробно говорят все остальные.

Ответ 10

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

Ответ 11

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

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

Деталь:

enter image description here

Ссылки