Использование pip и MacPorts для установки пакетов Python

12

Я мог бы установить пакет Python ( например , numpy) на моем Mac либо через Macports:

port install py-numpy

или через pip:

pip install numpy

Каковы общие плюсы / минусы каждого подхода? Когда следует использовать каждый подход?

  • Когда я должен предпочесть одно другому?
  • Имеет ли значение, является ли устанавливаемый пакет маленьким или большим (например numpy)?
  • Зависит ли это от версии Python, которую я использую ( 2.xпротив 3.xили от Apple pythonпротив MacPort python)?
  • Имеет ли значение, pythonустановлено ли на моем Mac несколько версий ?
  • Могут ли они использоваться одновременно?

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

jvriesem
источник
Связанные, но слишком конкретные: stackoverflow.com/questions/16895282/… . Я прошу общие пакеты Python, а не просто matplotlib.
jvriesem
AFAIK они уже установлены - вы можете проверить в терминале:> python и следующую команду> импортировать numpy как np, и если ошибок нет, то у вас это есть. Альтернативное решение состоит в том, чтобы использовать anaconda из continueum.io/downloads - имеет много функций, и дальнейшая установка с pip будет идти в вашей папке anaconda.
Йоан
@ Йоан: numpyэто просто пример. Я спрашиваю об установке пакетов в целом.
jvriesem

Ответы:

3

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

Предостережение

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

Например, допустим, вы установили Python 3.6 на свой Mac. Вы хотите nltk, что технически недоступно для этой версии в Macports, но это в пунктах. Итак, вы устанавливаете на пипс. Два месяца спустя вы видите, что он установлен на Macports, и выбираете его установить. Теперь у вас есть две разные версии nltkна вашем компьютере, поэтому будьте бдительны .

Гоча

Если вы используете pip с Macports, вам нужно убедиться, что это pip, установленный через Macports и связанный с этой версией Python. Так, например, вы увидите py35-pip, py36-pip и т. Д.

После того, как вы установите соответствующий пип, вы используете команду Macports, selectчтобы убедиться, что он активирован с соответствующей версией python:

sudo port select
Роб М.
источник
Мой опыт показывает, что установка модулей в глобальную область Python, созданную MacPorts, вызывает конфликты. Рано или поздно MacPorts попытается установить порт, который вы уже установили с помощью pip. Он выдаст сообщение об ошибке, если файл в этом порту присутствует, но не установлен MacPorts. Я думаю, что ответ @ IanC лучше: установить в глобальную область Python, используя только MacPorts, установить в виртуальной среде, используя только pip.
Джим DeLaHunt
4

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

Вместо этого вам следует установить pip-install virtualenv, а затем использовать его для управления различными виртуальными установками Python и всеми соответствующими пакетами пакетов pip-install для каждой виртуальной среды.

Это позволяет вам переключаться с работы, скажем, с beautifulsoup1.x в одном репозитории программного обеспечения на beautifulsoup2.x в другом репозитории без необходимости проходить через ад управления зависимостями.

Ян С.
источник
0

Я только что провел быстрый тест для поиска того же пакета, используя Homebrew , MacPorts и pip3 :

brew search numpy
sudo port search --name --glob '*numpy'
pip3 search numpy

MacPorts и pip3 имели одинаковый пакет (версия 1.18.1 ), тогда как Homebrew имел версию 1.16 .

Сотрудничая с другими, лучше всего договориться о том, как настроены среды разработки, иначе вы столкнетесь с аномалиями и получите разные результаты тестирования. Поэтому лучший инструмент - это тот, с которым вы все согласны ;-)

F1Linux
источник