17 votes

Utilisation de pip ou de MacPorts pour l'installation de paquets Python

Je pourrais installer un paquetage Python ( par exemple , numpy ) sur mon Mac soit via Macports :

port install py-numpy

ou via pip :

pip install numpy

Quels sont les avantages et inconvénients généraux de chaque approche ? Quand chaque approche doit-elle être utilisée ?

  • Quand dois-je préférer l'un à l'autre ?
  • Est-il important que le paquet que j'installe soit petit ou grand (par ex. numpy ) ?
  • Cela dépend-il de la version de Python que j'utilise ( 2.x vs. 3.x ou celui d'Apple python contre celui de MacPort python ) ?
  • Est-ce que cela a de l'importance si j'ai plusieurs versions de python installé sur mon Mac ?
  • Peuvent-ils être utilisés simultanément ?

J'espère obtenir une réponse qui contienne une brève liste des avantages et des inconvénients de chaque approche, ainsi qu'une discussion sur le moment où il convient de choisir l'une ou l'autre.

6voto

shsteimer Points 8749

Vous devez utiliser pip parce que c'est l'outil natif de Python pour gérer les installations de paquets pero vous ne devriez pas installer des choses par pip dans votre installation de base de Python. Il peut être très compliqué d'avoir à trier les dépendances de versions fixes entre plusieurs dépôts de logiciels si vous installez tout par pip dans votre installation de base de Python sur votre machine.

Au lieu de cela, vous devez pip-installer virtualenv et l'utiliser ensuite pour gérer différentes installations virtuelles de Python et tous les paquets associés installés par pip pour chaque environnement virtuel.

Cela vous permet de passer du travail avec, par exemple, beautifulsoup 1.x dans un seul dépôt de logiciels pour beautifulsoup 2.x dans un autre référentiel sans avoir à passer par l'enfer de la gestion des dépendances.

5voto

Rob M. Points 72

Ils peuvent être utilisés simultanément, et il ne devrait pas y avoir de problème à mélanger les deux (avec une sorte de grosse mise en garde et un piège...).

La mise en garde

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

Par exemple, disons que vous installez Python 3.6 sur votre Mac. Vous voulez nltk qui n'est pas techniquement disponible pour cette version sur Macports, mais qui l'est sur Pip. Donc vous l'installez sur pip. Deux mois plus tard, vous voyez qu'il est installé sur Macports et vous choisissez de l'installer. Maintenant vous avez deux versions différentes de nltk sur votre machine, donc caveat emptor .

Le Gotcha

Si vous utilisez pip avec Macports, vous devez vous assurer que c'est le pip qui est installé par 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 pip adéquat, vous utilisez l'outil Macports select pour s'assurer qu'il est activé avec la version appropriée de Python :

sudo port select

1voto

F1Linux Points 1481

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

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

MacPorts et pip3 avait le même paquet (version 1.18.1 ), alors que Homebrew avait une version 1.16 .

Lorsque vous collaborez avec d'autres personnes, il est préférable de se mettre d'accord sur la façon dont vos environnements de développement sont configurés, sinon vous commencerez à vous heurter à 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 ;-)

1voto

yoliho Points 340

En général, utilisez un seul gestionnaire de paquets à la fois.

Notez que les choses changent. La dernière fois que j'ai vraiment examiné les configurations, c'était il y a 3 ans, je ne pense pas que beaucoup de choses aient changé, mais pip etc. gagne en fonctionnalité au fil du temps.

Macports et Homebrew sont des gestionnaires de paquets généraux pour toutes les langues. pip est un gestionnaire purement Python. Il existe également conda qui est Python mais qui fait aussi des trucs d'usage général. Il semble avoir étendu son champ d'action à d'autres langages.

pip (avec pipenv ) et conda fournissent également des environnements virtuels Python qui permettent de disposer de différents ensembles de bibliothèques pour chaque projet et vous permettent de définir une version différente de Python pour chaque projet, par exemple 2.7, 3.7, 3.8. Dans les autres cas, vous devez utiliser pip pour les versions de Python.

Une autre différence concerne les parties d'un paquet qui ont des dépendances non Python. pip doit les compiler alors que les autres auront une configuration de compilateur plus robuste et fourniront généralement un binaire compilé.

Je pense que pour installer pip vous devez démarrer à partir de macports ou homebrew, la page pipenv montre homebrew. Il suffit d'installer Python, pip et peut-être pipenv à partir de ce gestionnaire de paquets.

J'utilise maintenant Conda, qui semble fournir plus d'informations et qui est autonome. I

Historiquement, j'ai utilisé macports pour le démarrage et la compilation de toutes les bibliothèques C, par exemple numpy (certains des paquets mathématiques sous-jacents ont plus de réglage que pip) et pip/pipenv pour les bits purement Python.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X