Quelle est la difference entre pip et conda?

723

Je sais que pipc'est un gestionnaire de paquets pour les paquets python. Cependant, j'ai vu l'installation sur le site Web condad'IPython utiliser pour installer IPython.

Puis-je utiliser pippour installer IPython? Pourquoi devrais-je utiliser condacomme un autre gestionnaire de packages python alors que je l'ai déjà pip?

Quelle est la difference entre pipet conda?

lazywei
la source
En lisant attentivement la page d'installation, vous verrez des instructions complètes pour installer avec pip et qui conda/ enpgksont destinées à new users who want to get up and running with minimal effort: canopy / anaconda sont des environnements autonomes, qui n'interfèrent pas avec le python du système (comme venv mais plus puissant). BTW IPyhton, pas iPython (majuscule I)
Matt
3
Une différence est que beaucoup plus de choses peuvent être installées par pip que par conda: pip peut installer n'importe quoi à partir de pypi en une seule commande. conda nécessite trois commandes: skeleton, build, install et éventuellement plus si cela ne fonctionne pas. pip peut installer n'importe quoi depuis github ou source en une seule commande. conda nécessite d'écrire une "recette", ce qui n'est pas facile, d'autant plus que la documentation semble toujours incorrecte / obsolète.
endolith
5
Question connexe: Quels sont les AVANTAGES du pip sur conda? Je vois beaucoup de plaidoyer Anaconda ci-dessous, mais rien pour pip. Pourquoi pip est-il toujours la norme, si anaconda est si génial?
Brian Postow
24
Je trouve cette citation éclairante: " Pip est un gestionnaire de packages et Virtualenv est un gestionnaire d'environnement. Conda est les deux." ( réf. )
Atcold
1
Observation: Je pensais que conda impliquait de télécharger un paquet de zillions, mais cela n'est apparemment plus vrai: vous pouvez installer miniconda, qui semble être essentiellement le gestionnaire de paquets, conda.io/docs/install/quick.html
Hugh Perkins

Réponses:

522

Citation du blog Conda :

Ayant été impliqué dans le monde python depuis si longtemps, nous connaissons tous pip, easy_install et virtualenv, mais ces outils ne répondaient pas à toutes nos exigences spécifiques. Le principal problème est qu'ils se concentrent sur Python, négligeant les dépendances de bibliothèque non-Python, telles que HDF5, MKL, LLVM, etc., qui n'ont pas de fichier setup.py dans leur code source et n'installent pas non plus de fichiers sur le site de Python -répertoire de packages.

Donc Conda est un outil et un installateur d'emballage qui vise à faire plus que ce qui pipfait; gérer les dépendances de bibliothèque en dehors des packages Python ainsi que les packages Python eux-mêmes. Conda crée également un environnement virtuel, comme le virtualenvfait.

En tant que tel, Conda devrait peut-être être comparé à Buildout , un autre outil qui vous permet de gérer à la fois les tâches d'installation Python et non Python.

Parce que Conda introduit un nouveau format d'emballage, vous ne pouvez pas utiliser pip et Conda de manière interchangeable; pipne peut pas installer le format de package Conda. Vous pouvez utiliser les deux outils côte à côte (en installant pipavec conda install pip) mais ils ne fonctionnent pas non plus.

Depuis la rédaction de cette réponse, Anaconda a publié un nouvelle page sur Understanding Conda and Pip , qui fait également écho à ceci:

Cela met en évidence une différence clé entre conda et pip. Pip installe des packages Python tandis que conda installe des packages qui peuvent contenir des logiciels écrits dans n'importe quelle langue. Par exemple, avant d'utiliser pip, un interpréteur Python doit être installé via un gestionnaire de packages système ou en téléchargeant et en exécutant un programme d'installation. Conda, d'autre part, peut installer directement les packages Python ainsi que l'interpréteur Python.

et plus loin

Parfois, un package est nécessaire qui n'est pas disponible en tant que package conda mais est disponible sur PyPI et peut être installé avec pip. Dans ces cas, il est logique d'essayer d'utiliser à la fois conda et pip.

Martijn Pieters
la source
18
Merci pour votre explication. Cependant, je ne sais toujours pas si Conda peut remplacer le pip? c'est-à-dire, Conda peut-il faire tout ce que pip peut faire?
lazywei
10
@lazywei: Je ne pense pas que ce soit possible; il ne semble pas que Conda supporte le format d'archive de roue, par exemple. Ils ont des objectifs différents.
Martijn Pieters
45
@ naught101 "Il suffit de créer une recette" Ce n'est pas aussi simple que de taper pip install.
endolith
23
Certains peuvent-ils m'expliquer ce qui se passerait si vous utilisiez pip et conda pour installer le même paquet sauf avec une version différente, que python utiliserait lorsque vous les importeriez?
Lance Ruo Zhang
4
@jrh: vous ne pouvez pas installer plusieurs versions du même package côte à côte lorsque vous utilisez le gestionnaire de packages du système d'exploitation, pas en tant que fonctionnalité principale. Conda gère les environnements , chacun avec sa propre combinaison de packages installés dans des versions spécifiques. Ainsi, le projet A, ayant été développé il y a quelque temps, peut toujours s'accrocher à une ancienne version de la bibliothèque Foo (aucune ressource disponible pour mettre à niveau le projet pour qu'il fonctionne avec une version plus récente) tandis que le projet B nécessite la dernière version de la même bibliothèque.
Martijn Pieters
246

Voici un bref aperçu:

pépin

  • Packages Python uniquement.
  • Compile tout depuis la source. EDIT: pip installe maintenant des roues binaires, si elles sont disponibles.
  • Béni par la communauté Python principale (c'est-à-dire que Python 3.4+ inclut du code qui amorce automatiquement pip).

conda

  • Python agnostique. L'objectif principal des packages existants est pour Python, et en effet Conda lui-même est écrit en Python, mais vous pouvez également avoir des packages Conda pour les bibliothèques C, ou des packages R, ou vraiment n'importe quoi.
  • Installe les binaires. Il existe un outil appelé conda buildqui construit les packages à partir des sources, mais conda installinstalle lui-même des éléments à partir des packages Conda déjà construits.
  • Externe. Conda est le gestionnaire de paquets d'Anaconda, la distribution Python fournie par Continuum Analytics, mais il peut également être utilisé en dehors d'Anaconda. Vous pouvez l'utiliser avec une installation Python existante en l'installant par pip (bien que ce ne soit pas recommandé, sauf si vous avez une bonne raison d'utiliser une installation existante).

Dans les deux cas:

  • Écrit en Python
  • Open source (Conda est BSD et pip est MIT)

Les deux premières puces de Conda sont vraiment ce qui le rend avantageux par rapport à pip pour de nombreux packages. Puisque pip s'installe à partir des sources, il peut être pénible d'installer des choses avec lui si vous ne parvenez pas à compiler le code source (cela est particulièrement vrai sous Windows, mais cela peut même être vrai sous Linux si les packages ont une bibliothèque C ou FORTRAN difficile). dépendances). Conda installe à partir de binaire, ce qui signifie que quelqu'un (par exemple, Continuum) a déjà fait le travail difficile de compiler le paquet, et donc l'installation est facile.

Il existe également des différences si vous souhaitez créer vos propres packages. Par exemple, pip est construit au-dessus de setuptools, tandis que Conda utilise son propre format, qui présente certains avantages (comme être statique, et encore une fois, agnostique Python).

asmeurer
la source
21
pip ne construit plus tout à partir de la source. Si une roue est disponible, pip install --use-wheel <package>installe un package intégré. Voir ici: wheel.readthedocs.org/en/latest . Cependant, mon expérience personnelle avec la roue est que si peu de paquets de roues scientifiques sont disponibles que c'est purement académique. Et bien sûr, l'installation par pip ne fonctionne généralement pas non plus sur Windows si votre environnement de construction n'est pas configuré correctement. Donc pour le moment, conda ftw.
Caleb Hattingh
4
Les roues sont encore nouvelles et ne sont pas utilisées par défaut, il n'est donc pas surprenant qu'elles ne soient pas encore très nombreuses. Wheel s'inscrit toujours dans la catégorie des "spécifiques à Python", ce qui signifie qu'il peut être mal adapté aux packages non Python ou aux packages Python qui dépendent de packages non Python.
asmeurer
4
J'ai dû déprécier ceci: le deuxième point n'est plus qu'une note historique, mais vous y reviendrez plus tard. La principale différence de nos jours est que pip est un gestionnaire de paquets tandis que conda est plus un gestionnaire d'environnement.
Shep
9
Il est vrai que pip peut compiler à partir de la source, mais cela devient de moins en moins fréquent à mesure que de plus en plus de packages se déplacent vers wheel: ces jours-ci, je peux installer la plupart de ce dont j'ai besoin en quelques secondes avec pip. Ce n'est donc pas que cette réponse est fausse, elle devient juste un peu dépassée car pip s'est beaucoup amélioré ces dernières années
Shep
4
Il n'a jamais été vrai que pip ne peut installer qu'à partir de la source. Avant les roues, nous avions des oeufs comme format d'installation binaire par défaut et le format de distribution recommandé pour les installations Windows, et pip installerait (et installerait toujours) des oeufs si c'est la meilleure option disponible.
Martijn Pieters
96

Les autres réponses donnent une description juste des détails, mais je veux souligner certains points de haut niveau.

pip est un gestionnaire de packages qui facilite l'installation, la mise à niveau et la désinstallation des packages python . Il fonctionne également avec des environnements virtuels en python .

conda est un gestionnaire de packages pour tout logiciel (installation, mise à niveau et désinstallation). Il fonctionne également avec les environnements de système virtuel .

L'un des objectifs de la conception de conda est de faciliter la gestion des packages pour toute la pile logicielle requise par les utilisateurs, dont une ou plusieurs versions de python ne peuvent être qu'une petite partie. Cela inclut les bibliothèques de bas niveau, telles que l'algèbre linéaire, les compilateurs, tels que mingw sur Windows, les éditeurs, les outils de contrôle de version comme Hg et Git, ou tout autre élément nécessitant une distribution et une gestion .

Pour la gestion des versions, pip vous permet de basculer entre et de gérer plusieurs environnements python .

Conda vous permet de basculer entre et de gérer plusieurs environnements à usage général dans lesquels plusieurs autres choses peuvent varier dans le numéro de version, comme les bibliothèques C ou les compilateurs, ou les suites de tests, ou les moteurs de base de données, etc.

Conda n'est pas centré sur Windows, mais sur Windows, il est de loin la solution supérieure actuellement disponible lorsque des packages scientifiques complexes nécessitant une compilation doivent être installés et gérés.

Je veux pleurer quand je pense au temps que j'ai perdu en essayant de compiler bon nombre de ces packages via pip sous Windows, ou de déboguer des pip installsessions ayant échoué lorsque la compilation était requise.

Enfin , Continuum Analytics héberge également (gratuitement) binstar.org (maintenant appelé anaconda.org ) pour permettre aux développeurs de packages réguliers de créer leurs propres piles logicielles personnalisées (construites!) À partir desquelles leurs utilisateurs de packages seront en mesure de conda installpartir.

Caleb Hattingh
la source
4
Selon votre dernier point, le projet de conda-forge tiers est rapidement devenu l'approche standard de l'industrie pour la publication de packages Anaconda. Nous avons récemment publié plusieurs packages hébergés par conda-forge pour notre simulateur de biologie multiphysique - et nous ne pouvons pas recommander suffisamment le processus. Il existe un composant d'examen par les pairs basé sur GitHub PR pour soumettre de nouvelles recettes à conda-forge, mais les avantages en termes d'automatisation de conda-forge l'emportent largement sur l'investissement de temps initial. Bam!
Cecil Curry
@CecilCurry J'ai importé Kerasdans mon code, installé anaconda sur mon mac et Keras est à la fois condainstallé et pipinstallé. Ainsi, lors de l'exécution de mon code dans le terminal, comment savoir lequel kerasest importé ( pipcelui ou l' condaun)?
KPMG
25

Pour ne pas vous embrouiller davantage, mais vous pouvez également utiliser pip dans votre environnement conda, qui valide les commentaires généraux et spécifiques aux gestionnaires python ci-dessus.

conda install -n testenv pip
source activate testenv
pip <pip command>

vous pouvez également ajouter pip aux packages par défaut de n'importe quel environnement afin qu'il soit présent à chaque fois afin que vous n'ayez pas à suivre l'extrait ci-dessus.

vijay venkatesh
la source
Je pensais que ce n'était pas recommandé?
endolith
8
Il est tout à fait recommandé d'utiliser du pip à l'intérieur du conda. Il est préférable d'installer en utilisant conda, mais pour tous les paquets qui n'ont pas de construction conda, il est parfaitement acceptable d'utiliser pip.
Bradley Kreider
2
nit: semble que la phrase serait fully supported? fully recommendedimplique, il vaut mieux utiliser pip que conda, dans un environnement conda, à mon avis, et je ne suis pas sûr que ce soit ce que vous / ils veulent dire?
Hugh Perkins
22

Citation d'un article de Conda for Data Science sur le site Web de Continuum:

Conda vs pip

Les programmeurs Python connaissent probablement pip pour télécharger des packages à partir de PyPI et gérer leurs besoins. Bien que conda et pip soient des gestionnaires de packages, ils sont très différents:

  • Pip est spécifique aux packages Python et conda est indépendant de la langue, ce qui signifie que nous pouvons utiliser conda pour gérer les packages à partir de n'importe quelle langue.
  • Conda crée nativement des environnements indépendants du langage tandis que pip s'appuie sur virtualenv pour gérer uniquement les environnements Python Bien qu'il soit recommandé de toujours utiliser les packages conda, conda inclut également pip, vous n'avez donc pas à choisir entre les deux. Par exemple, pour installer un package python qui n'a pas de package conda, mais qui est disponible via pip, exécutez simplement, par exemple:
conda install pip
pip install gensim
CheTesta
la source
15

Citant Conda: mythes et idées fausses (une description complète):

...

Mythe # 3: Conda et pip sont des concurrents directs

Réalité: Conda et pip ont des fonctions différentes et ne rivalisent directement que dans un petit sous-ensemble de tâches: l'installation de packages Python dans des environnements isolés.

Pip, qui signifie P ip I nstalls P ackages, est le gestionnaire de packages officiellement approuvé par Python et est le plus souvent utilisé pour installer les packages publiés sur le Python Package Index (PyPI). Pip et PyPI sont régis et pris en charge par la Python Packaging Authority (PyPA).

En bref, pip est un gestionnaire à usage général pour les packages Python; conda est un gestionnaire d'environnement multiplateforme indépendant de la langue. Pour l'utilisateur, la distinction la plus importante est probablement la suivante: pip installe des packages python dans n'importe quel environnement; conda installe n'importe quel package dans les environnements conda. Si tout ce que vous faites est d'installer des packages Python dans un environnement isolé, conda et pip + virtualenv sont pour la plupart interchangeables, modulo une certaine différence dans la gestion des dépendances et la disponibilité des packages. Par environnement isolé, j'entends un conda-env ou virtualenv, dans lequel vous pouvez installer des packages sans modifier l'installation de votre système Python.

Même en mettant de côté le mythe n ° 2, si nous nous concentrons uniquement sur l'installation de packages Python, conda et pip servent différents publics et différents objectifs. Si vous voulez, par exemple, gérer des packages Python dans une installation Python système existante, conda ne peut pas vous aider: par conception, il ne peut installer des packages que dans des environnements conda. Si vous voulez, par exemple, travailler avec les nombreux packages Python qui reposent sur des dépendances externes (NumPy, SciPy et Matplotlib sont des exemples courants), tout en suivant ces dépendances de manière significative, pip ne peut pas vous aider: par conception, il gère les packages Python et uniquement les packages Python.

Conda et pip ne sont pas des concurrents, mais plutôt des outils axés sur différents groupes d'utilisateurs et modes d'utilisation.

sancho.s ReinstateMonicaCellio
la source
1
Je ne suis pas sûr que ce soit vraiment vrai, au-delà d'une perspective de positionnement sur le marché. Par exemple, regardez pytorch, qui propose trois types d'installation: conda, pip, source, pytorch.org et recommande: conda
Hugh Perkins
2
"Installer des packages Python dans des environnements isolés" est en quelque sorte la chose principale pour laquelle la plupart des développeurs Python utilisent pip.
Nick
@Nick n'est-ce pas quand le développeur est déjà dans «cet» environnement virtuel? Je pense que pip fonctionne dans un environnement virtuel et installe le package comme s'il installait pour un système. quiconque s'il vous plaît me corriger si je me trompe.
Chan Kim
12

Pour les utilisateurs de WINDOWS

La situation des outils de conditionnement "standard" s'améliore récemment:

  • sur le pypi lui-même, il y a maintenant 48% de paquets de roues en septembre. 11th 2015 (contre 38% en mai 2015, 24% en sept. 2014),

  • le format de roue est maintenant pris en charge prêt à l'emploi par le dernier python 2.7.9,

La situation des outils de packaging "standard" + "tweaks" s'améliore également:

  • vous pouvez trouver presque tous les packages scientifiques sur le format de roue sur http://www.lfd.uci.edu/~gohlke/pythonlibs ,

  • le projet mingwpy pourrait apporter un jour un package de «compilation» aux utilisateurs de Windows, permettant d'installer tout depuis la source en cas de besoin.

L'emballage "Conda" reste meilleur pour le marché qu'il dessert et met en évidence les domaines où le "standard" devrait s'améliorer.

(aussi, la spécification de dépendance à efforts multiples, dans le système de roue standard et dans le système conda, ou buildout, n'est pas très pythonique, ce serait bien si toutes ces techniques `` de base '' d'emballage pouvaient converger, via une sorte de PEP)

stonebig
la source
8

pip est un gestionnaire de packages.

conda est à la fois un gestionnaire de packages et un gestionnaire d'environnement.

Détail:

entrez la description de l'image ici

Références

Simba
la source
2

Puis-je utiliser pip pour installer iPython?

Bien sûr, les deux (première approche à la page)

pip install ipython

et (troisième approche, la deuxième est conda)

Vous pouvez télécharger manuellement IPython depuis GitHub ou PyPI. Pour installer une de ces versions, décompressez-la et exécutez ce qui suit à partir du répertoire source de niveau supérieur à l'aide du terminal:

pip install .

sont des méthodes d'installation officiellement recommandées .

Pourquoi devrais-je utiliser conda comme un autre gestionnaire de paquets python alors que j'ai déjà pip?

Comme dit ici :

Si vous avez besoin d'un package spécifique, peut-être seulement pour un projet, ou si vous devez partager le projet avec quelqu'un d'autre, conda semble plus approprié.

Conda dépasse pip in ( YMMV )

  • projets utilisant des outils non python
  • partage avec des collègues
  • basculer entre les versions
  • basculer entre des projets avec différentes versions de bibliothèque

Quelle est la difference entre pip et conda?

Cela est largement répondu par tout le monde.

serv-inc
la source
1

pip est pour Python uniquement

condaest uniquement pour Anaconda + d'autres packages scientifiques comme les dépendances R, etc. Tout le monde n'a pas besoin d'Anaconda qui est déjà livré avec Python. Anaconda est principalement destiné à ceux qui font du Machine Learning / Deep Learning, etc. Un développeur Python occasionnel ne fera pas tourner Anaconda sur son ordinateur portable.

Galapagos
la source
explication simple, mais on m'a appris à aller directement sur le site Web d'Anaconda et à télécharger la distribution Python 2.x ou 3.x. Pourquoi? > car il contient tous les packages dont un étudiant aura besoin. Numpy, Scipy, matpliotlib, sklearn etc. C'est exactement pourquoi il y a une lacune dans la compréhension des détails fondamentaux les plus fins. Étudiant
René Duchamp
Je sais que c'est une vieille réponse à ce stade, mais ce que vous avez écrit sur Conda / Anaconda me semble complètement faux.
AMC
0

J'ai peut-être trouvé une autre différence de nature mineure. J'ai mes environnements python sous /usrplutôt que /homeou quoi que ce soit. Pour l'installer, je devrais utiliser sudo install pip. Pour moi, l'effet secondaire indésirable de sudo install pipétait légèrement différent de ce qui est largement rapporté ailleurs: après cela, j'ai dû courir pythonavec sudopour importer l'un des sudopackages installés. J'ai abandonné et j'ai finalement trouvé que je pouvais utiliser sudo condapour installer des packages dans un environnement dans /usrlequel ensuite importé normalement sans avoir besoin de l' sudoautorisation pour python. J'ai même l'habitude sudo condade réparer un cassé pipplutôt que d'utiliser sudo pip uninstall pipou sudo pip --upgrade install pip.

JB
la source
0

PIP et Conda sont des applications différentes pour accomplir la même chose. Les deux sont des moyens standard d'installer des packages. La principale différence est la source des fichiers de package. Pypi aura plus de packages "expérimentaux" ou de nouvelles versions de packages. Il y a plusieurs fois, j'ai dû utiliser pip à partir d'un environnement de conda. Il y a des paquets qui n'existent que sur pypi, donc conda ne les trouvera pas. J'essaie généralement d'installer conda en premier, et si cela ne fonctionne pas, l'installation par pip fonctionne la plupart du temps.

Donald Stierman
la source