Конкретные причины отдавать предпочтение pip и conda при установке пакетов Python - PullRequest
0 голосов
/ 22 февраля 2019

Я использую miniconda в качестве установки по умолчанию для Python.Какова текущая (2019) мудрость относительно того, когда устанавливать что-то с помощью conda против pip?

Мое обычное поведение - устанавливать все с помощью pip, и только с использованием conda, если пакет не доступен через pip или pipверсия не работает правильно.

Есть ли преимущества всегда отдавать предпочтение conda install?Есть ли проблемы, связанные с смешением двух установщиков?Какие факторы я должен учитывать?


ОБЪЕКТИВНОСТЬ: Это не вопрос, основанный на мнении!Мой вопрос: когда у меня есть возможность установить пакет Python с pip или conda, как мне принять обоснованное решение?Не «скажи мне, что лучше, но » Почему я бы использовал один поверх другого, и колебания назад и вперед вызовут проблемы / неэффективность? »

Ответы [ 4 ]

0 голосов
/ 31 мая 2019

При использовании экосистемы анаконды вы всегда должны отдавать предпочтение conda перед pip.

В документах конкретно упоминается следующее: (выделено мной)

Если пакет недоступен на conda или Anaconda.org,Вы можете найти и установить пакет с помощью другого менеджера пакетов, такого как pip.

Пакеты Pip не обладают всеми функциями пакетов conda, и мы рекомендуем сначала попробовать установить любой пакет с помощью conda. Если пакет недоступен через conda, попробуйте установить его с помощью pip. Различия между пакетами pip и conda приводят к определенным неизбежным ограничениям совместимости , но conda усердно работает над тем, чтобы быть максимально совместимым с pip.

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

0 голосов
/ 22 февраля 2019

Вот что я делаю:

  1. Активируйте вашу conda virutal env
  2. Используйте pip для установки в вашу виртуальную среду
  3. Если у вас возникнут проблемы с совместимостью,используйте conda

Я недавно столкнулся с этим, когда numpy / matplotlib пришел в ужас, и я использовал сборку conda, чтобы решить эту проблему.

0 голосов
/ 22 февраля 2019

Согласны с eatmeimadanish .Сначала Conda, а затем pip имеет смысл с учетом вашей * исходной точки conda.

TL; DR Backstory

Anaconda (дистрибутив) и Conda (менеджер пакетов)) были разработаны для решения проблем, связанных с установкой и интеграцией, чего не было в статус-кво.

Статус-кво здесь охватывает огромное пространство: любую комбинацию двоичных файлов Python (либо предоставленных ОС, либо загруженных с Python.org), установщиков пакетов системного уровня (например, apt get, yum, homebrew), пакета, ориентированного на PythonУстановщики (например, easy_install и pip), и рамки установки (например, setuptools и distutils), которые вы можете использовать.И этот статус-кво сильно изменился за прошедшие годы: некоторые детали (например, easy_install, distutils) отпали, и на борту появились новые детали (например, колеса, шпагат).Не виден огромный и постоянный поток экосистемы JavaScript, но пакетирование и установка Python никогда не были «решенной проблемой», и предпочтительные участники для решения проблемы сильно варьировались с течением времени.Вы можете утверждать, что некоторые или большинство проблем, которые раньше были у инструментов Python, в основном решены.По крайней мере, некоторые из них, но сообщество * conda очень не согласится с тем, что они затмевались.

Если вы начинаете с Анаконды или миниконды, я предполагаю, что вы наслаждаетесь их достоинствами (их возможно более высокая простота установки,лучшая интеграция и т. д.).В противном случае вы, вероятно, выбрали бы более «стандартный» или ванильный дистрибутив Python, или, возможно, другой «лучше, чем базовый дистрибутив Python из-за X, Y и Z» (например, ActivePython, Enthought Canopy, ...).Учитывая это, я думаю, вы сначала захотите использовать conda, а не наоборот.

Конечно, вы можете попробовать установить каждый пакет с pip и вернуться только к conda.если пипс разочаровывает, но это, кажется, обходит ваш основной выбор, начиная с * и отдавая предпочтение инструментам и экосистеме conda.

0 голосов
/ 22 февраля 2019

Я считаю, что сначала я использую conda просто потому, что он устанавливает двоичный файл, а затем попробуйте pip, если пакет не существует.Например, psycopg2 гораздо проще установить в conda, чем в pip.

https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions/

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

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

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

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

...