Використання pip vs. 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 встановлені кілька версій ?
  • Чи можна їх використовувати одночасно?

Я сподіваюсь на відповідь, яка містить короткий перелік деяких плюсів / мінусів кожного підходу з деякою дискусією про те, коли вибрати один над іншим.


Пов'язані, але занадто специфічні: stackoverflow.com/questions/16895282 / ... . Я прошу загальні пакети python, а не просто matplotlib.
jvriesem

AFAIK вони вже встановлені - ви можете перевірити в терміналі:> python та наступна команда> імпортувати numpy як np, а якщо помилок немає, то у вас це є. Альтернативним рішенням є використання anaconda з continuum.io/downloads - має багато можливостей, і подальші установки з pip будуть проходити у вашій папці анаконди.
Йоан

@Yoan: numpyце лише приклад. Я прошу про встановлення пакетів взагалі.
jvriesem

Відповіді:


3

Їх можна застосовувати одночасно, і між змішуванням двох (з одним великим застереженням та ґутчем ... не повинно виникнути жодних проблем)

Печера

Застереження полягає в тому, що макпорти / домашній пиріг і піп не матимуть обізнаності про кожен встановлений проти іншого.

Так, наприклад, скажемо, що ви встановите python 3.6 на свій Mac. Ви хочете nltk, що технічно недоступно для цієї версії на Macports, але вона є на піп. Отже, ви встановлюєте на pip. Через два місяці ви побачите його, встановлене на Macports, і вирішите його встановити. Тепер у вас є дві різні версії nltkна вашій машині, тому застережте емптор .

Готча

Якщо ви використовуєте pip разом із Macports, вам потрібно переконатися, що це файл, який встановлюється через Macports та асоціюється з цією версією python. Так, наприклад, ви побачите py35-pip, py36-pip тощо.

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

sudo port select

Мій досвід полягає в тому, що встановлення модулів до глобальної області Python, створеної MacPorts, викликає конфлікти. Рано чи пізно MacPorts спробує встановити порт, який ви вже встановили через pip. Він видасть повідомлення про помилку щодо того, що файл у цьому порту присутній, але не встановлений MacPorts. Я думаю, що відповідь @ IanC краще: встановіть до глобальної області Python лише MacPorts, встановіть лише у віртуальному середовищі, використовуючи лише pip.
Jim DeLaHunt

4

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

Натомість вам слід встановити pip-install virtualenv, а потім використовувати його для управління різними, віртуальними установками Python та всіма пов'язаними з ними пакетами пакетів пакетів для кожного віртуального середовища.

Це дозволяє перейти від роботи, скажімо, з 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 .

Співпрацюючи з іншими, краще домовитися про те, як налаштовано ваше середовище розробки, або ви почнете стикатися з аномаліями та отримувати різні результати тесту. Тому найкращим інструментом є той, про який ви всі згодні ;-)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.