web-dev-qa-db-fra.com

Quelle est la difference entre pip et conda?

Je sais que pip est un gestionnaire de paquets pour les paquets Python. Cependant, j'ai vu l'installation sur le site Web d'IPython utiliser conda pour installer IPython.

Puis-je utiliser pip pour installer IPython? Pourquoi devrais-je utiliser conda comme autre gestionnaire de paquets Python alors que j'ai déjà pip?

Quelle est la différence entre pip et conda?

525
lazywei

Citant sur le blog Conda :

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

Conda est donc un outil de packaging et un programme d’installation dont le but est de faire plus que ce que pip fait; 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 fait virtualenv.

En tant que tel, Conda devrait être comparé à Buildout peut-être, à un autre outil qui vous permettra de gérer les tâches d’installation Python et celles qui ne le sont pas.

Étant donné que Conda introduit un nouveau format de conditionnement, vous ne pouvez pas utiliser pip et Conda de façon interchangeable; pip ne peut pas installer le format de package Conda. Vous pouvez utiliser les deux outils côte à côte (en installant pip avec conda install pip), mais ils n'interagissent pas non plus.

373
Martijn Pieters

Voici un bref aperçu:

pépin

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

conda

  • Agnostique Python. Les packages existants sont principalement destinés à Python, et conda est écrit en Python, mais vous pouvez également avoir des packages conda pour les bibliothèques C, les packages R ou autre chose.
  • Installe les binaires. Il existe un outil appelé conda build qui construit les paquetages à partir de la source, mais conda install installe lui-même les choses à partir des paquets conda déjà construits. 
  • Externe. Conda est le gestionnaire de paquets d'Anaconda, la distribution Python fournie par Continuum Analytics, mais elle peut également être utilisée en dehors d'Anaconda. Vous pouvez l'utiliser avec une installation Python existante en installant pip (bien que cela ne soit pas recommandé à moins que vous n'ayez 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 premiers points de conda sont vraiment ce qui le rend avantageux sur pip pour de nombreux paquets. Puisque pip est installé à partir du source, il peut être difficile d’installer le logiciel si vous ne pouvez pas compiler le code source (ceci est particulièrement vrai sous Windows, mais cela peut même être vrai sous Linux si les paquetages ont une bibliothèque difficile C ou FORTRAN dépendances). Conda s’installe à partir de fichiers binaires, ce qui signifie que quelqu'un (par exemple, Continuum) a déjà effectué le travail ardu de compilation du package. L'installation est donc facile. 

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

212
asmeurer

Les autres réponses donnent une description juste des détails, mais je voudrais souligner quelques points importants.

pip est un gestionnaire de paquets qui facilite l'installation, la mise à niveau et la désinstallation de paquets python. Cela fonctionne aussi avec les environnements virtuels python.

conda est un gestionnaire de paquets pour tous les logiciels (installation, mise à niveau et désinstallation). Cela fonctionne également avec les environnements virtuels système.

L'un des objectifs de la conception de conda est de faciliter la gestion des paquets pour l'ensemble de la pile de logiciels 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 sous Windows, les éditeurs, les outils de contrôle de version tels que Hg et Git ou tout ce qui nécessite une distribution et une gestion}.

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

Conda vous permet de basculer et de gérer plusieurs environnements polyvalents dans lesquels plusieurs autres éléments peuvent varier en nombre de versions, tels que les bibliothèques C, les compilateurs, les suites de tests, les moteurs de base de données, etc.

Conda n'est pas centré sur Windows, mais sous Windows, il s'agit de loin de 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 à essayer de compiler plusieurs de ces paquets via pip sur Windows, ou à déboguer des sessions pip install ayant échoué lorsque la compilation était requise.

Enfin, Continuum Analytics héberge également (gratuitement) binstar.org (maintenant appelé anaconda.org ) afin de permettre aux développeurs de packages standard de créer leurs propres piles logicielles personnalisées (construites!) Que leurs packages. les utilisateurs pourront conda install partir de.

81
Caleb Hattingh

Pour ne pas vous embrouiller davantage, .__, mais vous pouvez également utiliser pip dans votre environnement Conda, qui valide les commentaires des gestionnaires généraux par rapport à 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 de code ci-dessus. 

22
vijay venkatesh

Citation de Conda for Data Science article sur le site web du continuum:

Conda vs pip

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

  • Pip est spécifique aux packages Python et conda est indépendant du langage, ce qui signifie que nous pouvons utiliser conda pour gérer les packages à partir de n’importe quel langage Pip compile à partir de la source et conda installe les fichiers binaires, ce qui supprime la charge de la compilation
  • Conda crée des environnements agnostiques en langage de manière native alors 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 paquet python qui n'a pas de paquet conda, mais est disponible via pip, exécutez simplement, par exemple:
conda install pip
pip install gensim
18
CheTesta

Pour les utilisateurs de Windows

La situation des outils d’emballage "standard" s’améliore récemment:

  • sur le pypi lui-même, il y avait maintenant 48% de paquets de roues à partir de septembre. 11e 2015 (contre 38% en mai 2015 et 24% en septembre 2014),

  • le format de roue est maintenant pris en charge immédiatement avec Python 2.7.9,

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

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

  • le projet mingwpy peut apporter un jour un paquet «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 dans lesquels le "standard" devrait s'améliorer.

(de plus, la spécification de dépendance multi-effort, dans le système de roue standard et dans le système de conda, ou de construction, n’est pas très pythonique, il serait bien que toutes ces techniques de «noyau» d’emballage puissent converger, via une sorte de PEP)

11
stonebig

Citant de Conda: Mythes et idées fausses (description détaillée):

...

Mythe n ° 3: Conda et pip sont des concurrents directs

Réalité: Conda et pip servent différents objectifs et ne concurrencent directement que dans un petit sous-ensemble de tâches, à savoir l'installation de packages Python dans des environnements isolés.

Pip, qui signifie P ip I nstalls P ackages, est le gestionnaire de paquets officiellement approuvé par Python, et est le plus souvent utilisé pour installer des paquets publiés sur Python. Indice de package (PyPI). Pip et PyPI sont tous deux régis et pris en charge par Python Packaging Authority (PyPA).

En bref, pip est un gestionnaire généraliste pour les packages Python; conda est un gestionnaire d’environnement multi-plateformes indépendant de la langue. Pour l’utilisateur, la distinction la plus saillante est probablement la suivante: pip installe les packages Python dans n’importe quel environnement; conda installe n'importe quel paquet dans les environnements conda. Si vous ne faites qu'installer des packages Python dans un environnement isolé, conda et pip + virtualenv sont généralement interchangeables, modulo une différence dans le traitement 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 votre installation système Python.

Même en mettant de côté le Mythe n ° 2, si nous nous concentrons uniquement sur l’installation de paquets Python, conda et pip servent différents publics et différentes finalités. Si vous voulez, par exemple, gérer les packages Python dans une installation système existante de Python, conda ne peut pas vous aider: de par sa conception, il ne peut installer que des packages 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 effectuant un suivi significatif de ces dépendances, pip ne peut pas vous aider: de par sa conception, gère les packages Python et uniquement les packages Python.

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

10
sancho.s

pip est pour Python seulement

conda est seulement pour Anaconda + d'autres paquets scientifiques comme les dépendances R etc. Tout le monde n'a pas besoin d'Anaconda qui est déjà fourni avec Python. Anaconda est principalement destiné à ceux qui apprennent à la machine/en profondeur, etc. Le développeur Python occasionnel ne pourra pas exécuter Anaconda sur son ordinateur portable.

3
Galapagos

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 seconde est conda)

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

pip install .

sont les moyens officiellement recommandés pour installer .

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 uniquement pour un projet, ou si vous devez partager le projet avec quelqu'un d'autre, conda semble plus approprié.

Conda surpasse pip in ( YMMV )

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

Quelle est la difference entre pip et conda?

Tous les autres ont largement répondu à cette question.

0
serv-inc

J'ai peut-être trouvé une autre différence de nature mineure. J'ai mes environnements python sous /usr plutôt que /home ou peu importe. Pour l'installer, je devrais utiliser Sudo install pip. Pour moi, l'effet secondaire non désiré de Sudo install pip était légèrement différent de ce qui est largement rapporté ailleurs: après cela, j'ai dû exécuter python avec Sudo afin d'importer l'un des packages Sudo-installés. J'ai renoncé à cela et j'ai finalement trouvé que je pouvais utiliser Sudo conda pour installer des packages dans un environnement sous /usr qui était ensuite importé normalement sans nécessiter l'autorisation Sudo pour python. J'ai même utilisé Sudo conda pour réparer une pip cassée plutôt que d'utiliser Sudo pip uninstall pip ou Sudo pip --upgrade install pip

0
J B