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

724

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

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

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

lazywei
источник
Тщательно Чтение страницы установки вы увидите полную инструкцию по установке с пип и что conda/ enpgkориентированно на new users who want to get up and running with minimal effort: пологе / Анакондой является автономным environement, которые не мешают систему питон (как venv , но более мощный). Кстати, IPyhton, а не iPython (в верхнем регистре I)
Мэтт
3
Одно из отличий состоит в том, что pip может установить гораздо больше вещей, чем conda: pip может установить что угодно из pypi одной командой. conda требует три команды: skeleton, build, install и, возможно, еще, если это не сработает. pip может установить что-либо из github или source за одну команду. Конда требует написания «рецепта», что нелегко, тем более что документация всегда кажется неправильной / устаревшей.
эндолит
5
Смежный вопрос: каковы ПРЕИМУЩЕСТВА pip over conda? Я вижу много пропаганды Анаконды ниже, но ничего за пипс. Почему pip остается стандартом, если анаконда так хороша?
Брайан Постоу
24
Я нахожу эту цитату просветить: « Пип является менеджером пакетов, и Virtualenv является средой менеджером. Конда одновременно.» ( ссылка )
Atcold
1
Наблюдение: Раньше я думал, что conda подразумевает загрузку zillion пакетов, но это уже не правда: вы можете установить miniconda, которая, по сути, является просто менеджером пакетов, conda.io/docs/install/quick.html
Хью Перкинс

Ответы:

522

Цитата из блога 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и Conda взаимозаменяемо; pipневозможно установить формат пакета Conda. Вы можете использовать два инструмента бок о бок (устанавливая pipс помощью conda install pip), но они также не взаимодействуют.

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

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

и далее

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

Мартейн Питерс
источник
18
Спасибо за ваше объяснение. Я все еще смущен, может ли Конда заменить Пип? то есть, может ли Конда сделать все, что может сделать пипс?
Lazywei
10
@lazywei: я не думаю, что может; например, Conda не поддерживает формат колесного архива. У них разные цели.
Мартин Питерс
45
@ naught101 «Просто создай рецепт» Это не так просто, как печатать pip install.
Эндолит
23
Могут ли некоторые объяснить мне, что произойдет, если вы используете pip и conda для установки одного и того же пакета, за исключением другой версии, которую Python будет использовать при их импорте?
Ланс Руо Чжан
4
@jrh: вы не можете устанавливать несколько версий одного и того же пакета бок о бок при использовании диспетчера пакетов ОС, а не в качестве основной функции. Conda управляет средами , каждая из которых имеет собственный набор установленных пакетов в определенных версиях. Таким образом, проект A, разработанный некоторое время назад, все еще может цепляться за более старую версию библиотеки Foo (нет ресурсов для обновления проекта для работы с более новой версией), в то время как для проекта B требуется самая новая версия той же библиотеки.
Мартин Питерс
246

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

зернышко

  • Только пакеты 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).

asmeurer
источник
21
Пип больше не строит все из исходного кода. Если колесо доступно, pip install --use-wheel <package>будет установлен встроенный пакет. Смотрите здесь: wheel.readthedocs.org/en/latest . Однако мой личный опыт работы с колесом таков, что так мало научных пакетов колес доступно, что оно чисто академическое. И, конечно же, установка pip в большинстве случаев не работает и в Windows, если ваша среда сборки настроена неправильно. Итак, на данный момент, conda ftw.
Калеб Хаттинг
4
Колеса все еще новые и не используются по умолчанию, поэтому неудивительно, что их пока не так много. Колесо по-прежнему вписывается в категорию «специфичных для Python», что означает, что он может плохо подходить для не-Python-пакетов или пакетов Python, которые зависят от не-Python-пакетов.
asmeurer
4
Я должен был понизить это: второй пункт - это просто историческая заметка, но вы также остановитесь на этом позже. Основное различие в эти дни в том, что pip - менеджер пакетов, а conda - менеджер среды.
Шеп
9
Это правда, что pip может компилироваться из исходного кода, но это происходит все реже, так как все больше пакетов перемещается на колесо: в эти дни я могу установить большую часть того, что мне нужно, за несколько секунд с помощью pip. Так что это не значит, что этот ответ неправильный, он просто немного устарел, поскольку за последние несколько лет количество пунктов значительно улучшилось
Шеп
4
Она никогда и не было правдой , что пип можно установить только из источника. До появления колёс у нас были яйца в качестве стандартного двоичного формата установки и рекомендуемого формата распространения для установок Windows, и pip установит (и будет) устанавливать яйца, если это лучший доступный вариант.
Мартейн Питерс
96

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

pip - менеджер пакетов, который облегчает установку, обновление и удаление пакетов 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.

Калеб Хаттинг
источник
4
По Вашей конечной точке, то третья сторона Конды-горн проект быстро стал отраслевым стандартом подходом к публикации пакетов Anaconda. Недавно мы опубликовали несколько пакетов в conda-forge для нашего мультифизического симулятора биологии - и не можем рекомендовать этот процесс достаточно. Для отправки новых рецептов в conda-forge существует компонент экспертной оценки GitHub, основанный на PR, но преимущества с точки зрения автоматизации conda-forge значительно перевешивают первоначальные затраты времени. Бам!
Сесил Карри
@CecilCurry Я импортировал Kerasв свой код, установил anaconda на мой Mac, и Keras был condaустановлен и pipустановлен. Итак, когда я запускаю свой код в терминале, как узнать, какой kerasимпортируется ( pipтот или condaдругой)?
KPMG
25

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

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

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

Виджай Венкатеш
источник
Я думал, что это не рекомендуется?
Эндолит
8
Полностью рекомендуется использовать пипс внутри конды. Лучше установить с использованием conda, но для любых пакетов, которые не имеют сборки conda, вполне приемлемо использовать pip.
Брэдли Крейдер
2
nit: похоже фраза будет fully supported? fully recommendedна мой взгляд, лучше использовать pip, чем conda, в среде conda, и я не уверен, что вы это имеете в виду?
Хью Перкинс
22

Цитата из статьи Conda для Data Science на сайте Continuum:

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

Программисты 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
CheTesta
источник
15

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

...

Миф № 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 - не конкуренты, а инструменты, ориентированные на разные группы пользователей и модели использования.

sancho.s ReinstateMonicaCellio
источник
1
Я не уверен, что это действительно так, за пределами перспективы позиционирования на рынке. Например, посмотрите на pytorch, который предлагает три типа установки: conda, pip, source, pytorch.org и рекомендует: conda
Hugh Perkins
2
«Установка пакетов Python в изолированных средах» - это то, для чего большинство разработчиков Python используют pip.
Ник
@ Ник, не правда ли, когда разработчик уже находится в «той» виртуальной среде? Я думаю, что pip работает в виртуальной среде и устанавливает пакет так, как будто он устанавливается для системы. Но, как сказал sanchos.s, он устанавливает только пакеты python и не заботится о базовых библиотеках. Кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь.
Чан Ким
12

Для пользователей 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)

stonebig
источник
2

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

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

pip install ipython

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

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

pip install .

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

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

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

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

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

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

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

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

Serv-вкл
источник
1

pip только для Python

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

Galapagos
источник
простое объяснение, но меня учили заходить прямо на сайт Anaconda и скачивать дистрибутив Python 2.x или 3.x. Почему? > потому что он содержит все пакеты, которые понадобятся студенту. Numpy, Scipy, matpliotlib, sklearn и т. Д. Именно поэтому существует пробел в понимании более мелких фундаментальных деталей. Студент
Рене Дюшан
Я знаю, что это старый ответ на данный момент, но то, что вы написали о Конде / Анаконде, мне кажется совершенно ложным.
AMC
0

Возможно, я обнаружил еще одно отличие незначительного характера. У меня есть среда 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.

JB
источник
0

PIP и Conda - это разные приложения для достижения одной и той же цели. Оба являются стандартными способами установки пакетов. Основным отличием является источник файлов пакета. У Pypi будет больше «экспериментальных» пакетов или более новых версий пакетов. Мне много раз приходилось использовать pip из среды conda. Есть пакеты, которые существуют только на pypi, поэтому conda их не найдет. Я обычно сначала пытаюсь установить conda, и если это не работает, pip install работает в большинстве случаев.

Дональд Штиерман
источник