Używanie pip vs. MacPorts do instalowania pakietów Pythona

12

Mogę zainstalować pakiet python ( na przykład , numpy) na komputerze Mac za pośrednictwem MacPorts:

port install py-numpy

lub przez pip:

pip install numpy

Jakie są ogólne zalety / wady każdego podejścia? Kiedy należy zastosować każde podejście?

  • Kiedy powinienem preferować jeden od drugiego?
  • Czy to ważne, czy pakiet, który instaluję, jest mały czy duży (np. numpy)?
  • Czy to zależy od wersji Pythona, której używam ( 2.xvs. 3.xlub Apple pythonvs. MacPort python)?
  • Czy to ważne, czy mam wiele wersji pythonzainstalowanych na komputerze Mac?
  • Czy można ich używać jednocześnie?

Mam nadzieję na odpowiedź, która zawiera krótką listę niektórych zalet / wad każdego podejścia z dyskusją na temat tego, kiedy wybrać jedną z drugiej.

jvriesem
źródło
Powiązane, ale zbyt szczegółowe: stackoverflow.com/questions/16895282/... . Pytam raczej o ogólne pakiety Pythona niż tylko matplotlib.
jvriesem
AFAIK są już zainstalowane - możesz sprawdzić w terminalu:> python i następne polecenie> zaimportuj numpy jako np, a jeśli nie ma błędów, to je masz. Alternatywnym rozwiązaniem jest użycie anakondy z continuum.io/downloads - ma wiele funkcji, a dalsze instalacje z pipem zostaną wprowadzone w folderze anaconda.
Yoan
@Yoan: numpyto tylko przykład. Pytam ogólnie o instalację pakietów.
jvriesem

Odpowiedzi:

3

Można ich używać jednocześnie i nie powinno być problemu między ich mieszaniem (z jednym rodzajem ostrzeżenia i gotcha ...)

Zastrzeżenie

Zastrzeżenie polega na tym, że Macports / Homebrew i Pip nie będą świadomi, że każdy z nich został zainstalowany względem drugiego.

Załóżmy na przykład, że instalujesz Pythona 3.6 na komputerze Mac. Chcesz nltk, który nie jest technicznie dostępny dla tej wersji na Macports, ale jest na pip. Więc instalujesz na pip. Dwa miesiące później zobaczysz, że jest zainstalowany na Macports i zdecydujesz się go zainstalować. Teraz masz dwie różne wersje nltkna swoim komputerze, więc zastrzegaj emptor .

Gotcha

Jeśli używasz pip z Macports, musisz upewnić się, że to pip jest zainstalowany za pośrednictwem Macports i powiązany z tą wersją Pythona. Na przykład zobaczysz py35-pip, py36-pip itp.

Po zainstalowaniu właściwego pipa, użyj selectpolecenia Macports, aby upewnić się, że jest on aktywowany za pomocą odpowiedniej wersji Pythona:

sudo port select
Rob M.
źródło
Z mojego doświadczenia wynika, że ​​instalacja modułów w globalnym obszarze Pythona utworzonym przez MacPorts powoduje konflikty. Wcześniej czy później MacPorts spróbuje zainstalować port, który został już zainstalowany przez pip. Wyświetli komunikat o błędzie, że plik w tym porcie jest obecny, ale nie jest zainstalowany przez MacPorts. Myślę, że odpowiedź @ IanC jest lepsza: zainstaluj w globalnym obszarze Python, używając tylko MacPorts, instaluj w środowiskach wirtualnych, używając tylko pip.
Jim DeLaHunt
4

Powinieneś użyć, pipponieważ jest to rodzime narzędzie Pythona do zarządzania instalacjami pakietów, ale nie powinieneś instalować potoków w podstawowej instalacji Pythona. Problemem może być uporządkowanie zależności między wersjami między wieloma repozytoriami oprogramowania, jeśli instalujesz wszystko pipem w podstawowej instalacji Pythona na swoim komputerze.

Zamiast tego powinieneś zainstalować pipen virtualenv, a następnie użyć go do zarządzania różnymi wirtualnymi instalacjami Pythona i wszystkimi powiązanymi pakietami zainstalowanymi pipem dla każdego środowiska wirtualnego.

Pozwala to na przejście z pracy, powiedzmy, beautifulsoup1.x w jednym repozytorium oprogramowania na beautifulsoup2.x w innym repozytorium bez konieczności przechodzenia przez piekło zarządzania zależnościami.

Ian C.
źródło
0

Właśnie zrobiłem szybki test w poszukiwaniu tego samego pakietu przy użyciu Homebrew , MacPorts i pip3 :

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

MacPorts i pip3 miały ten sam pakiet (wersja 1.18.1 ), podczas gdy Homebrew miał wersję 1.16 .

Współpracując z innymi, najlepiej uzgodnij, w jaki sposób skonfigurowane są środowiska programistyczne, inaczej zaczniesz wpadać na anomalie i uzyskiwać różne wyniki testów. Dlatego najlepszym narzędziem jest to, na które wszyscy się zgadzacie ;-)

F1Linux
źródło