Зачем нам Anaconda, когда у нас есть пип?

Anaconda стал очень популярным в научных вычислениях, поскольку он объединяет более 125 наиболее широко используемых библиотек анализа данных Python. Мой вопрос в том, что, поскольку у нас уже есть pip (который является очень широко используемым менеджером пакетов Python), зачем нам Anaconda? Разве мы не можем просто набрать pip install для каждой из 125 + библиотек, и все они будут хорошо работать вместе? Или они не будут хорошо работать вместе, а это означает, что Anaconda оказала нам большую услугу, разобрав проблемы, возникающие при попытке получить 125+ библиотеки для взаимодействия?

Ответ 1

Три основных причины:

  • Для большинства из этих библиотек требуется связывание с установленными на компьютере библиотеками (например, HDF5 для PyTables или ATLAS для Numpy), которые пользователь может или не может знать. Обратите внимание, что Matplotlib требует кучу разных графических библиотек, и если они отсутствуют, он будет разбиваться на определенные серверы.
  • pip компилирует библиотеки (с колесами можно избежать этого шага, хотя). Для этого требуется компилятор C (сложный в Windows) и компилятор FORTRAN (сложный в Mac и Windows). Это также требует времени для больших библиотек, таких как Scipy.
  • Anaconda metapackage anaconda - это минимальный набор библиотек, которые Continuum удостоверились в том, что они хорошо играют вместе. В идеальном мире мы всегда должны использовать последнюю и самую улучшенную версию всего, но это может привести к несовместимости.

И дополнение:

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

Ответ 2

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

Например, см. мой вопрос: Как установить Bootstrap numpy в setup.py

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

Кроме того, компиляция библиотек занимает много времени. Просто набрав pip install numpy на моей машине, потребуется более минуты. По той же причине люди используют предварительно скомпилированные двоичные файлы с apt-get или yum вместо компиляции программ из источника.