В чем разница между pip и conda?
Я знаю, что pip
— это менеджер пакетов для Python. Однако на сайте IPython я увидел, что для установки IPython используется conda
.
Могу ли я использовать pip
для установки IPython? Почему стоит использовать conda
в качестве другого менеджера пакетов для Python, если у меня уже есть pip
?
В чем разница между pip
и conda
?
5 ответ(ов)
Не хочу вводить вас в заблуждение, но вы также можете использовать pip внутри вашего conda-окружения, что подтверждает вышеупомянутые комментарии о различиях между общими и специфическими для Python менеджерами.
conda install -n testenv pip
source activate testenv
pip <команда pip>
Кроме того, вы можете добавить pip в пакеты по умолчанию для любого окружения, чтобы он был доступен каждый раз, и вам не пришлось следовать приведенному выше примеру.
Для пользователей WINDOWS
Ситуация с "стандартными" инструментами упаковки в последнее время улучшается:
- На PyPI на 11 сентября 2015 года уже 48% пакетов представлены в формате wheel (по сравнению с 38% в мае 2015 и 24% в сентябре 2014 года).
- Формат wheel теперь поддерживается "из коробки" в последней версии Python 2.7.9.
Ситуация с "стандартными" плюс "настроенными" инструментами упаковки также улучшилась:
- Вы можете найти почти все научные пакеты в формате wheel на сайте http://www.lfd.uci.edu/~gohlke/pythonlibs.
- Проект mingwpy может в будущем предложить пакет для "компиляции" для пользователей Windows, позволяя устанавливать всё из исходников при необходимости.
Упаковка "Conda" по-прежнему лучше подходит для рынка, который она обслуживает, и подчеркивает области, где "стандарт" должен улучшиться.
(Кроме того, множественные усилия по спецификации зависимостей как в стандартной системе wheel, так и в системе conda или buildout не являются очень питоничными. Было бы здорово, если бы все эти "основные" техники упаковки могли конвергировать, например, через какой-то PEP).
Чтобы ответить на исходный вопрос,
для установки пакетов PIP и Conda — это разные способы достижения одной и той же цели. Оба инструмента являются стандартными приложениями для установки пакетов. Основное различие заключается в источнике файлов пакетов.
- PIP/PyPI обычно предлагает больше «экспериментальных» пакетов или более новых, редко используемых версий пакетов.
- Conda в основном содержит более устоявшиеся пакеты или версии.
Важно отметить предостережение: если вы используете оба источника (pip и conda) для установки пакетов в одной среде, это может вызвать проблемы в будущем.
- Воссоздать окружение будет сложнее.
- Исправление несовместимостей пакетов становится более сложным.
Лучшей практикой является выбор одного приложения — PIP или Conda — для установки пакетов и использование этого инструмента для установки всех необходимых пакетов. Тем не менее, существуют множество исключений или причин, по которым вы все равно можете использовать pip в среде conda и наоборот. Например:
- Когда есть пакеты, которые вам нужны, а они доступны только в одном из них.
- Вам нужна определенная версия, которая доступна лишь в одной среде.
pip
предназначен только для Python.
conda
, в свою очередь, в основном используется с Anaconda и другими научными пакетами, такими как зависимости для R и т.д. Не всем пользователям необходима Anaconda, которая уже включает Python. Anaconda обычно применяется теми, кто занимается машинным обучением, глубоким обучением и т.д. Обычному разработчику на Python не нужно запускать Anaconda на своем ноутбуке.
Я, возможно, нашел еще одну незначительную разницу. У меня окружения 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
.
Как обновить pip изнутри виртуального окружения?
Как удалить все пакеты, установленные через pip?
Узнать, какая версия пакета установлена с помощью pip
Ошибка EnvironmentError: не найден mysql_config при установке mysql-python с помощью pip
Как заставить pip переустановить текущую версию?