873 votes

Quelle est la différence entre pip et conda ?

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

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

Quelle est la différence entre pip y conda ?

0 votes

En lisant attentivement le page d'installation vous verrez instruction complète à installer avec pip et que conda / enpgk s'adresse à 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 système python (comme venv mais plus puissant). BTW IPyhton, pas iPython (I majuscule)

7 votes

Une des différences 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 à partir de github ou des sources 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 être incorrecte/dépassée.

7 votes

Question connexe : Quels sont les AVANTAGES de pip par rapport à conda ? Je vois beaucoup de plaidoyer pour Anaconda ci-dessous, mais rien pour pip. Pourquoi pip est-il toujours le standard, si anaconda est si génial ?

619voto

Martijn Pieters Points 271458

Citant le Le blog de Conda :

Ayant été impliqués dans le monde de 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 sont centrés sur Python, négligeant les dépendances de bibliothèques non-Python, telles que HDF5, MKL, LLVM, etc., qui n'ont pas de setup.py dans leur code source et n'installent pas non plus de fichiers dans le répertoire site-packages de Python.

Conda est donc un outil d'empaquetage et d'installation qui vise à faire plus que ce qu'on attend de lui. pip fait ; gérer les dépendances de la bibliothèque à l'extérieur de des paquets Python ainsi que les paquets Python eux-mêmes. Conda crée également un environnement virtuel, comme virtualenv fait.

En tant que tel, Conda doit être comparé à Buildout peut-être, 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 ; pip ne peut pas installer le format de paquet Conda. Vous pouvez utiliser les deux outils côte à côte (en installant pip con conda install pip ) mais ils n'interagissent pas non plus.

Depuis l'écriture de cette réponse, Anaconda a publié une nouvelle page sur Comprendre Conda et Pip qui y fait également écho :

Cela met en évidence une différence essentielle entre conda et pip. Pip installe des paquets Python alors que conda installe des paquets qui peuvent contenir des logiciels écrits dans n'importe quel langage. Par exemple, avant d'utiliser pip, un interprète Python doit être installé via un gestionnaire de paquets système ou en téléchargeant et en exécutant un installateur. Conda, quant à lui, peut installer directement les paquets Python ainsi que l'interpréteur Python.

et plus loin

De temps en temps, on a besoin d'un paquetage qui n'est pas disponible en tant que paquetage conda mais qui 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.

22 votes

Merci pour votre explication. Je reste cependant perplexe quant à la question de savoir si Conda peut remplacer pip ? c'est-à-dire si Conda peut faire tout ce que pip peut faire ?

11 votes

@lazywei : Je ne pense pas que ce soit possible ; il ne semble pas que Conda supporte le format d'archive wheel, par exemple. Leurs objectifs sont différents.

0 votes

Merci. Je dois donc suivre les instructions d'installation du paquet pour décider de l'outil à utiliser, n'est-ce pas ?

279voto

asmeurer Points 13185

Voici un bref aperçu de la situation :

pip

  • Paquets Python uniquement.
  • Compile tout à partir de la source. EDIT : pip installe maintenant les roues binaires, si elles sont disponibles.
  • Béni par le noyau de la communauté Python (c'est-à-dire que Python 3.4+ inclut un code qui démarre automatiquement pip).

conda

  • Agnostique à Python. Les paquets existants sont principalement destinés à Python, et Conda lui-même est écrit en Python, mais vous pouvez aussi avoir des paquets Conda pour des bibliothèques C, ou des paquets R, ou vraiment n'importe quoi.
  • Installe les binaires. Il existe un outil appelé conda build qui construit les paquets à partir des sources, mais conda install installe lui-même des éléments à partir de paquets Conda déjà construits.
  • Externe. Conda est le gestionnaire de paquets d'Anaconda, la distribution Python fournie par Continuum Analytics, mais il peut aussi être utilisé en dehors d'Anaconda. Vous pouvez l'utiliser avec une installation Python existante en l'installant avec pip (bien que cela 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 premiers points de Conda sont vraiment ce qui le rend plus avantageux que pip pour de nombreux paquets. Puisque pip installe à partir des sources, il peut être pénible d'installer des choses avec lui si vous êtes incapable de compiler le code source (c'est particulièrement vrai sous Windows, mais cela peut aussi être vrai sous Linux si les paquets ont des dépendances difficiles avec des bibliothèques C ou FORTRAN). Conda s'installe à partir d'un binaire, ce qui signifie que quelqu'un (par exemple, Continuum) a déjà fait le dur travail de compilation du paquet, et que l'installation est donc facile.

Il existe également quelques différences si vous souhaitez créer vos propres paquets. Par exemple, pip est construit au-dessus de setuptools, alors que Conda utilise son propre format, qui a quelques avantages (comme le fait d'être statique, et encore une fois, agnostique à Python).

23 votes

Pip ne construit plus tout à partir des sources. Si une roue est disponible, pip install --use-wheel <package> installera un paquet construit. Voir ici : wheel.readthedocs.org/fr/latest . Cependant, mon expérience personnelle en matière de roues est que si peu de paquets de roues scientifiques sont disponibles, cela reste purement académique. Et bien sûr, pip install ne fonctionne pas non plus sous Windows si votre environnement de construction n'est pas configuré correctement. Donc pour l'instant, conda ftw.

4 votes

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 entre toujours dans la catégorie "spécifique à Python", ce qui signifie qu'il peut être mal adapté aux paquets non-Python, ou aux paquets Python qui dépendent de paquets non-Python.

2 votes

Pour avoir une idée du genre de choses que vous pouvez utiliser conda pour gérer, jetez un coup d'œil à github.com/conda/conda-recettes . De plus, cette réponse ne tient pas compte du fait que conda est aussi un gestionnaire d'environnement, alors qu'avec pip vous devez vous rabattre sur quelque chose d'horrible comme virtualenv.

108voto

cjrh Points 3960

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

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

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

L'un des objectifs de la conception de conda est de faciliter la gestion des paquets pour l'ensemble de la pile logicielle requise par les utilisateurs, dont une ou plusieurs versions de python peuvent ne représenter qu'une petite partie. Cela inclut les bibliothèques de bas niveau, comme l'algèbre linéaire, les compilateurs, comme mingw sous Windows, les éditeurs, les outils de contrôle de version comme Hg et Git, ou encore tout ce qui nécessite une distribution et une gestion .

Pour la gestion des versions, pip vous permet de passer d'une version à l'autre et de gérer de multiples python environnements.

Conda vous permet de basculer entre et de gérer environnements multiples à usage général à travers laquelle de multiples autres choses peuvent varier en numéro de version, comme 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 est de loin la meilleure solution actuellement disponible lorsqu'il s'agit d'installer et de gérer des paquets scientifiques complexes nécessitant une compilation.

J'ai envie de pleurer quand je pense au temps que j'ai perdu à essayer de compiler un grand nombre de ces paquets via pip sous Windows, ou à déboguer les échecs de compilation. pip install lorsque la compilation était nécessaire.

Pour finir, Continuum Analytics héberge également (gratuitement) binstar.org (désormais appelé anaconda.org ) pour permettre aux développeurs de paquets ordinaires de créer leurs propres piles logicielles personnalisées (construites !) que les utilisateurs de paquets pourront utiliser. conda install de.

6 votes

Selon votre dernier point, le tierce partie conda-forge projet est rapidement devenu l'approche standard de l'industrie pour publier des paquets Anaconda. Nous avons récemment publié plusieurs paquets hébergés par conda-forge pour notre simulateur de biologie multiphysique - et je ne saurais trop recommander ce processus. L'envoi de nouvelles recettes à conda-forge est soumis à un examen par les pairs basé sur les relations publiques de GitHub, mais les avantages en termes d'automatisation de conda-forge l'emportent largement sur l'investissement initial en temps. Bam !

0 votes

@CecilCurry J'ai importé Keras dans mon code, j'ai installé anaconda sur mon mac et Keras est à la fois conda installé et pip installé. Ainsi, lorsque j'exécute mon code dans un terminal, comment puis-je savoir quel est le nom de la personne qui a installé le code ? keras est importé(le pip l'un ou l'autre conda un) ?

27voto

CheTesta Points 414

Citation de Conda pour la science des données sur le site web de Continuum :

Conda vs pip

Les programmeurs Python sont probablement familiers avec pip pour télécharger des paquets depuis 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 paquets Python et conda est agnostique en termes de langage, ce qui signifie que nous pouvons utiliser conda pour gérer les paquets de n'importe quel langage. Pip compile à partir des sources et conda installe les binaires, ce qui supprime la charge de la compilation.
  • Conda crée nativement des environnements agnostiques en fonction 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 paquets conda, conda inclut également pip, de sorte que vous n'avez pas à choisir entre les deux. Par exemple, pour installer un paquetage python qui n'a pas de paquetage conda, mais qui est disponible via pip, il suffit d'exécuter, par exemple :
conda install pip
pip install gensim

26voto

vijay venkatesh Points 261

Je ne veux pas vous embrouiller davantage, mais vous pouvez également utiliser pip dans votre environnement conda, ce qui valide les commentaires ci-dessus sur les gestionnaires généraux par rapport aux gestionnaires spécifiques à python.

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

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

0 votes

Je croyais que ce n'était pas recommandé ?

11 votes

Il est tout à fait recommandé d'utiliser pip à l'intérieur de conda. Il est préférable d'installer en utilisant conda, mais pour tous les paquets qui n'ont pas de compilation conda, il est parfaitement acceptable d'utiliser pip.

5 votes

Nit : on dirait que la phrase serait fully supported ? fully recommended implique qu'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 ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X