web-dev-qa-db-fra.com

Gestionnaire de package PIP vs pour la manutention Python packages

Les packages Python sont fréquemment organisés dans de nombreux référentiels de la distribution. Après la lecture ceci tutoriel, spécifiquement la section intitulée "Voulez-vous vraiment faire cela" que j'ai évité à l'aide d'un PIP et préféré pour utiliser le référentiel système, ce qui a recours à PIP lorsque j'ai besoin d'installer un colis non dans le référentiel.

Cependant, comme il s'agit d'une méthode d'installation incohérente, serait-il préférable d'utiliser uniquement PIP? Quels sont les avantages/les détracteurs à utiliser PIP sur le propre référentiel du système pour des packages disponibles dans les deux endroits?

Le lien que j'ai inclus états

L'avantage de toujours utiliser des packages de Debian/Neudebian standard, est que les packages sont soigneusement testés pour être compatibles les uns avec les autres. Les forfaits Debian enregistre des dépendances avec d'autres bibliothèques afin que vous obtiendrez toujours les bibliothèques dont vous avez besoin dans le cadre de l'installation.

J'utilise la voûte. Est-ce le cas avec d'autres systèmes de gestion de paquets en plus d'APT?

23
malan

Le plus gros inconvénient que je vois avec l'utilisation de pip à installer Python modules de votre système, soit comme des modules système, soit comme des modules d'utilisateur, est que le système de gestion de votre package de votre distribution ne saura pas à leur sujet. Cela signifie qu'ils ne seront utilisés pour aucun autre paquet qui en a besoin et que vous voudrez peut-être installer à l'avenir (ou qui pourraient commencer à utiliser l'un de ces modules suivant une mise à niveau); vous terminez ensuite Avec les deux versions pip - et des versions gérés par la distribution des modules, qui peuvent causer des problèmes (j'ai couru dans encore une autre instance de cela Récemment). Donc, votre question finit par être une proposition tout-ou-rien: si vous uniquement utilisez pip pour Python modules, vous ne pouvez plus utiliser le gestionnaire de packages de votre distribution pour tout ce qui souhaite utiliser un Python module ...

Le conseil général donné dans la page que vous avez liés est très bon: essayez d'utiliser les packages de votre distribution autant que possible, utilisez uniquement pip pour les modules qui ne sont pas emballés, et quand vous le faites dans votre Configuration de l'utilisateur et non à l'échelle du système. Utilisez des environnements virtuels autant que possible, en particulier pour le développement du module. Surtout sur la voûte, vous ne devriez pas courir dans des problèmes causés par des modules plus anciens; Même sur les distributions où cela peut être un problème, les environnements virtuels y traitent assez facilement.

Il est toujours utile d'envisager que la bibliothèque et les modules de distribution sont emballés principalement pour l'utilisation d'autres packages dans la distribution; Les avoir autour est un bel effet secondaire pour le développement en utilisant ces bibliothèques et modules, mais ce n'est pas le cas d'utilisation principale.

23
Stephen Kitt

Une autre raison d'aller avec le gestionnaire de paquets est que les mises à jour seront automatiquement appliquées, ce qui est essentiel pour la sécurité. Pensez si le forfait haricots Equifax utilisé avait été automatiquement mis à jour via Yum-Cron-Security, le hack peut ne pas être arrivé.

Sur ma boîte de développement personnelle, j'utilise PIP, dans PROD I Utilisez des packages.

8
Joe M

Si nous parlons d'installation python Packages à utiliser dans le code que vous écrivez, utilisez PIP.

Pour chaque projet, vous travaillez sur, créez un environnement virtuel, puis utilisez uniquement PIP pour installer les choses que ce projet a besoin. De cette façon, vous installez toutes les bibliothèques que vous utilisez de manière cohérente, et elles sont contenues et n'interfèrent rien que vous installez via votre gestionnaire de packages.

Si vous envisagez de publier tout python code, vous allez généralement ajouter un setup.py ou requirements.txt À votre projet, qui permettra à PIP d'obtenir automatiquement toutes ses dépendances. Vous permettant de créer ou de recréer facilement un environnement virtuel pour ce projet.

7
SpoonMeiser