122 votes

apt-get install vs pip install

Je suis un peu confus quant aux cas dans lesquels les commandes ci-dessus doivent être utilisées lors du téléchargement de paquets Python. J'essayais de télécharger un paquet nommé pyudev conformément à une réponse avec ceci question . J'ai exécuté cette commande :

sudo pip install python-pyudev

mais a reçu le message suivant :

Downloading/unpacking python-pyudev

  Could not find any downloads that satisfy the requirement python-pyudev
Cleaning up...
No distributions at all found for python-pyudev
Storing complete log in /home/vineet/.pip/pip.log

Cependant, les éléments suivants ont bien fonctionné :

sudo apt-get install python-pyudev

Quand est-ce que apt-get est censé être utilisé pour installer des paquets et quand est-ce que python-pip utilisé ?

120voto

Aditya Points 12756

PyPI est l'index des paquets Python - référentiel des modules Python.

pip est utilisé pour télécharger et installer des paquets directement depuis PyPI. PyPI est hébergé par Fondation logicielle Python . Il s'agit d'un gestionnaire de paquets spécialisé qui ne traite que les paquets Python.

apt-get est utilisé pour télécharger et installer des paquets à partir des dépôts Ubuntu qui sont hébergés par Canonical.

Certaines des différences entre l'installation des paquets Python à partir de apt-get y pip sont les suivants :

  • Canonical ne fournit des paquets que pour certains modules Python. Alors que PyPI héberge une gamme beaucoup plus large de modules Python. Il y a donc de nombreux modules Python que vous ne pourrez pas installer en utilisant apt-get .

  • Canonical n'héberge qu'une seule version d'un paquet (généralement la dernière ou celle publiée récemment). Ainsi, avec apt-get nous ne pouvons pas décider de la version de Python-package que nous voulons. pip nous aide dans cette situation. Nous pouvons installer n'importe quelle version du paquet qui a été précédemment téléchargée sur PyPI. Ceci est extrêmement utile en cas de conflit de dépendances.

  • apt-get installe les modules Python à l'échelle du système. Nous ne pouvons pas simplement installer les modules dans notre projet virtualenv . pip résout ce problème pour nous. Si nous utilisons pip après avoir activé le virtualenv, il est assez intelligent pour installer uniquement les modules dans le virtualenv de notre projet. Comme mentionné au point précédent, si une version d'un paquet Python particulier est déjà installée dans l'emplacement du système, et que l'un de nos projets nécessite une version plus ancienne du même paquet Python, dans de telles situations, nous pouvons utiliser virtualenv et pip pour installer cette ancienne version du paquet Python sans aucun conflit.

  • Comme @Radu Radeanu a souligné dans cette réponse il y a généralement des différences dans les noms des paquets également. Canonical nomme généralement les paquets Python 2 comme suit python-<package_name> et les paquets Python 3 comme python3-<package_name> . Considérant que pour pip il suffit généralement d'utiliser <package_name> pour les paquets Python 2 et Python3.

Lequel devez-vous utiliser ?

Les deux sites apt-get y pip sont des gestionnaires de paquets matures qui installent automatiquement toute dépendance d'un autre paquet lors de l'installation. Vous pouvez les utiliser comme bon vous semble. Toutefois, si vous avez besoin d'installer une version particulière de Python-package, ou d'installer le paquet dans un virtualenv, ou encore d'installer un paquet qui n'est hébergé que sur PyPI ; seuls les gestionnaires de paquets de pip vous aiderait à résoudre ce problème. Sinon, si cela ne vous dérange pas d'installer les paquets à l'échelle du système, cela n'a pas vraiment d'importance que vous utilisiez la commande apt-get o pip .

22voto

Radu Rădeanu Points 156862

Comme l'a dit @AvinashRaj dans son commentaire , pip est utilisé pour installer les paquets Python uniquement, mais apt-get est utilisé pour installer des paquets créés dans n'importe quel langage de programmation.

Votre principal problème est de trouver le bon nom de paquet dans les deux cas :

pip search pyudev

vous donnera le bon nom pour le paquet que vous voulez installer en utilisant pip install comme

apt-cache search pyudev

vous donnera le bon nom pour le paquet que vous voulez installer en utilisant apt-get install :

radu@Radu: ~ $ pip search pyudev
pyudev                    - A libudev binding
radu@Radu: ~ $ apt-cache search pyudev
python-pyudev - Python bindings for libudev
python3-pyudev - Python3 bindings for libudev

Donc, en conlusion, le correspondant de sudo apt-get install python-pyudev es sudo pip install pyudev no sudo pip install python-pyudev .

Cela dépend maintenant de ce que vous voulez choisir lorsque vous voulez installer un paquet Python : pip o apt-get . Voir par exemple cette Q&R sur la différence entre l'installation d'un paquet en utilisant pip y apt-get .

4voto

mestia Points 221

Ma méthode préférée est de toujours utiliser apt et seulement dans le cas où le module n'est pas encore disponible dans le dépôt de Debian/Ubuntu pour utiliser pip mais uniquement dans le contexte de l'utilisateur - --user drapeau. En utilisant pip il faut de toute façon installer toutes les dépendances de construction à partir, par exemple, du dépôt Ubuntu ou les fournir soi-même, ce qui peut être une tâche fastidieuse. apt-get installer des paquets binaires pendant que pip les construit après le téléchargement. On ne devrait pas utiliser pip pour installer des modules dans des emplacements système. C'est tout simplement une erreur. Utilisez toujours --user drapeau pour installer un module à l'emplacement d'origine. Une configuration correcte de PYTHONPATH permet à Python de récupérer d'abord les modules dans HOME, puis les modules du système installés avec l'option apt-get .

3voto

spidersilk Points 11

C'est le conseil donné sur un site largement diffusé sur le site GitHub pip sur le sujet système installé pip vs pip installé localement :

  1. N'utilisez jamais le gestionnaire de paquets de votre système pour mettre à jour le pip du système. . Le système installé pip est la propriété de la distribution, et si vous n'utilisez pas les outils fournis par la distribution pour le gérer, vous rencontrerez des problèmes. problèmes. Oui, nous savons que pip dit "vous devriez mettre à jour avec pip install -U pip" - c'est vrai dans une installation gérée par pip, idéalement les distributions devraient patcher ce message pour donner les instructions appropriées dans le pip système, mais elles ne le font pas. pour donner des instructions appropriées dans le système pip, mais elles ne le font pas. Nous travaillons avec sur ce point, mais ce n'est pas près d'arriver (rappelez-vous, nous sommes Nous travaillons avec eux sur ce point, mais ce n'est pas près d'arriver (rappelez-vous que nous examinons ici des cas où les gens mettent à jour d'anciennes versions de pip, donc les patchs pour les nouvelles versions n'aideront pas).

  2. Ne jamais utiliser sudo avec pip . Ceci découle du premier point. Si vous pensez que vous avez besoin d'utiliser sudo, vous essayez probablement de modifier un fichier appartenant à la distribution. Voir le point 1.

  3. Préférez utiliser --user . En faisant cela, vous n'installez les paquets que dans vos répertoires personnels, et vous évitez ainsi d'interférer avec la copie système de pip. avec la copie système de pip. Mais il y a des problèmes de PATH dont vous devez être attention ici. Nous les aborderons plus tard. Pour faire simple, il est possible de suivre ce conseil, et rencontrer quand même des problèmes, parce que vous ne n'exécutez pas réellement le wrapper que vous avez installé en tant que --user.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X