Je suis un peu confus quant aux cas dans lesquels les commandes ci-dessus doivent être utilisées lors du téléchargement de packages python. J'essayais de télécharger un paquet nommé Pyudev conformément à une réponse à cette 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-il apt-get
censé être utilisé pour installer des packages et quand est-il python-pip
utilisé?
apt
software-installation
python
pip
Vineet Kaushik
la source
la source
pip
est utilisé pour installer uniquement les packages python, maisapt-get
pour installer tous les packages.Réponses:
PyPI est l'index du package Python - le référentiel des modules Python.
pip
est utilisé pour télécharger et installer des packages directement à partir de PyPI. PyPI est hébergé par Python Software Foundation . C'est un gestionnaire de paquets spécialisé qui ne traite que les paquets python.apt-get
est utilisé pour télécharger et installer des packages à partir de référentiels Ubuntu hébergés par Canonical.Certaines des différences entre l’installation de packages python à partir de
apt-get
etpip
sont les suivantes:Canonical fournit uniquement des packages pour certains modules python. PyPI héberge une gamme beaucoup plus étendue de modules python. Donc, il y a beaucoup de modules python que vous ne pourrez pas installer avec
apt-get
.Canonical n’héberge qu’une version unique de chaque package (généralement la dernière ou celle publiée récemment). Donc, 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 dans les dépendances.apt-get
installe les modules python à l’emplacement du système. Nous ne pouvons pas simplement installer des modules dans notre projet virtualenv .pip
résout ce problème pour nous. Si nous utilisonspip
après l'activation de virtualenv, il est suffisamment intelligent pour installer uniquement les modules dans notre projet virtualenv. Comme mentionné dans le point précédent, si une version d'un package python particulier est déjà installée dans un emplacement système, et qu'un de nos projets nécessite une version plus ancienne du même package python, vous pouvez dans ce cas utiliser virtualenv et pip pour installer cette ancienne version du paquet python sans aucun conflit.Comme @Radu Rădeanu l'a souligné dans cette réponse , il y aurait généralement une différence dans les noms des paquets. Canonical nomme généralement les packages Python 2
python-<package_name>
et Python 3python3-<package_name>
. Alors que pourpip
nous, nous n’avons généralement besoin que d’utiliser<package_name>
à la fois les paquets Python 2 et Python3.Lequel devriez-vous utiliser:
Les deux
apt-get
etpip
sont des gestionnaires de paquets matures qui installent automatiquement toute autre dépendance de paquet lors de l’installation. Vous pouvez utiliser n'importe qui comme bon vous semble. Toutefois, si vous devez installer une version particulière de python-package, ou installer le package dans un virtualenv, ou installer un package uniquement hébergé sur PyPI. seulementpip
vous aider à résoudre ce problème. Sinon, si cela ne vous dérange pas d'installer les paquets dans un emplacement système, peu importe que vous utilisiezapt-get
ou nonpip
.la source
pip
etapt-get
simultanément.apt-get
. Parce que l'utilisation des deuxapt-get
etpip
peut causer des conflits, le conseil devrait-il être de toujours utiliserpip
pour les paquets supportés parpip
?sudo pip
sansvirtualenv
parce que la plupart de vos projets avaient besoin du même environnement (mais plus étendu que celui fourni avec une installation propre d'Ubuntu). Ensuite, lorsque vous effectuez une mise à niveau du système et que Ubuntu décide de mettre à niveau Python vers une nouvelle version (comme aveczesty
toartful
- Python 3.5 à 3.6), tous vos paquets installés par pip/usr
sont laissés etpip.get_installed_distributions()
produisent une liste vide.Comme @AvinashRaj l'a dit dans son commentaire , il
pip
est utilisé uniquement pour installer des packages python, maisapt-get
pour installer des packages créés dans n'importe quel langage de programmation.Votre problème principal est de trouver le bon nom de paquet dans les deux cas:
vous donnera le bon nom pour le paquet que vous voulez installer en utilisant
pip install
, commevous donnera le bon nom pour le paquet que vous voulez installer en utilisant
apt-get install
:Donc, en conclusion, le correspondant de
sudo apt-get install python-pyudev
n'estsudo pip install pyudev
passudo pip install python-pyudev
.Maintenant, cela dépend de ce que vous voulez choisir pour installer un paquet Python:
pip
ouapt-get
. Voir, par exemple, ce Q & A sur la différence d’installation d’un paquet avecpip
etapt-get
.la source
Ma méthode préférée est de toujours utiliser
apt
et seulement si le module n’est pas encore disponible dans le référentiel Debian / Ubuntupip
, mais seulement dans le contexte utilisateur ---user
indicateur. En utilisant l’pip
un d’eux, il faut obtenir toutes les dépendances de construction installées à partir du référentiel Ubuntu ou les fournir elles-mêmes, ce qui peut être une tâche fastidieuse.apt-get
Installez les paquets binaires pendant que vous lespip
construisez après le téléchargement. Il ne faut pas utiliser pip pour installer des modules dans des emplacements système. C'est tout simplement faux. Utilisez toujours--user
flag pour installer un module chez vous. Correctement configuré, PYTHONPATH permet à python de récupérer d’abord les modules à partir de HOME, puis les modules système installés avecapt-get
.la source