Utilisation de pip contre MacPorts pour installer des packages Python

12

Je pourrais installer un package python ( par exemple , numpy) sur mon Mac via Macports:

port install py-numpy

ou via pip:

pip install numpy

Quels sont les avantages / inconvénients généraux de chaque approche? Quand faut-il utiliser chaque approche?

  • Quand devrais-je préférer l'un à l'autre?
  • Est-il important que le package que j'installe soit petit ou grand (par exemple numpy)?
  • Cela dépend-il de la version de python que j'utilise ( 2.xvs 3.x, ou Apple pythonvs MacPort python)?
  • Est-il important que plusieurs versions de soient pythoninstallées sur mon Mac?
  • Peuvent-ils être utilisés simultanément?

J'espère une réponse qui contient une courte liste de certains avantages / inconvénients de chaque approche avec une discussion sur le moment de choisir l'une plutôt que l'autre.

jvriesem
la source
Lié, mais trop spécifique: stackoverflow.com/questions/16895282/… . Je demande des packages python généraux plutôt que juste matplotlib.
jvriesem
AFAIK ceux-ci sont déjà installés - vous pouvez vérifier dans le terminal:> python et la commande suivante> importer numpy en tant que np et si aucune erreur, vous l'avez. Une autre solution consiste à utiliser anaconda à partir de continuum.io/downloads - possède de nombreuses fonctionnalités et d'autres installations avec pip iront dans votre dossier anaconda.
Yoan
@Yoan: numpyn'est qu'un exemple. Je pose des questions sur l'installation des packages en général.
jvriesem

Réponses:

3

Ils peuvent être utilisés simultanément, et il ne devrait y avoir aucun problème entre le mélange des deux (avec une sorte de grosse mise en garde et un gotcha ...)

La mise en garde

La mise en garde est que macports / homebrew et pip n'auront aucune conscience de chacun a installé contre l'autre.

Ainsi, par exemple, disons que vous installez python 3.6 sur votre Mac. Vous voulez nltk, ce qui n'est pas techniquement disponible pour cette version sur Macports, mais c'est sur pip. Vous installez donc sur pip. Deux mois plus tard, vous voyez son installé sur Macports et choisissez de l'installer. Maintenant, vous avez deux versions différentes de nltksur votre machine, donc mettez en garde Emptor .

Le Gotcha

Si vous utilisez pip avec Macports, vous devez vous assurer que c'est bien le pip qui est installé via Macports et associé à cette version de python. Ainsi, par exemple, vous verrez un py35-pip, py36-pip, etc.

Une fois que vous avez installé le bon pip, vous utilisez la selectcommande de Macports pour vous assurer qu'il est activé avec la version appropriée de python:

sudo port select
Rob M.
la source
D'après mon expérience, l'installation de modules dans la zone globale Python créée par MacPorts provoque des conflits. Tôt ou tard, MacPorts tentera d'installer un port que vous avez déjà installé par pip. Il émettra un message d'erreur à propos d'un fichier dans ce port présent mais non installé par MacPorts. Je pense que la réponse de @ IanC est meilleure: installez dans la zone Python globale en utilisant MacPorts uniquement, installez dans des environnements virtuels en utilisant pip uniquement.
Jim DeLaHunt
4

Vous devez utiliser pipcar c'est l'outil natif Python pour gérer les installations de packages, mais vous ne devez pas installer les choses par pip dans votre installation Python de base. Il peut être compliqué de trier les dépendances de version fixes entre plusieurs référentiels de logiciels si vous installez tout par pip dans votre installation Python de base sur votre machine.

À la place, vous devez installer pip virtualenv , puis l'utiliser pour gérer différentes installations virtuelles Python et tous les packages de packages installés par pip associés pour chaque environnement virtuel.

Cela vous permet de passer de travailler avec, disons, beautifulsoup1.x dans un référentiel logiciel à beautifulsoup2.x dans un autre référentiel sans avoir à traverser l'enfer de la gestion des dépendances.

Ian C.
la source
0

Je viens de faire un test rapide en recherchant le même package en utilisant Homebrew , MacPorts et pip3 :

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

MacPorts et pip3 avaient le même package (version 1.18.1 ), tandis que Homebrew avait la version 1.16 .

Lorsque vous collaborez avec d'autres, il est préférable de vous mettre d'accord sur la configuration de vos environnements de développement ou vous commencerez à tomber sur des anomalies et à obtenir des résultats de test différents. Par conséquent, le meilleur outil est celui sur lequel vous êtes tous d'accord ;-)

F1Linux
la source