¿Cuál es la diferencia entre pip y conda?

Sé que pip es un gestor de paquetes para paquetes python. Sin embargo, vi que la instalación en el sitio web de IPython usaba conda para instalar IPython.

¿Puedo usar pip para instalar IPython? ¿Por qué debería usar conda como otro gestor de paquetes de Python cuando ya tengo pip ?

¿Cuál es la diferencia entre pip y conda ?

Citando desde el blog de Conda :

Habiendo estado involucrados en el mundo de Python durante tanto tiempo, todos somos conscientes de pip, easy_install y virtualenv, pero estas herramientas no cumplían con todos nuestros requisitos específicos. El principal problema es que están enfocados en Python, descuidando las dependencias de las bibliotecas que no son de Python, como HDF5, MKL, LLVM, etc., que no tienen un archivo setup.py en su código fuente y tampoco instalan archivos en el sitio de Python Directorio de paquetes.

Entonces, Conda es una herramienta de empaque e instalador que apunta a hacer más de lo que hace pip ; maneja las dependencias de la biblioteca fuera de los paquetes de Python, así como los paquetes de Python. Conda también crea un entorno virtual, como lo hace virtualenv .

Como tal, Conda debería compararse con Buildout , otra herramienta que le permite manejar las tareas de instalación de Python y las que no lo son.

Debido a que Conda introduce un nuevo formato de empaquetado, no puede usar pip y Conda de manera intercambiable; pip no puede instalar el formato del paquete Conda. Puede usar las dos herramientas una al lado de la otra (instalando pip con conda install pip ), pero tampoco interoperan.

Aquí hay un breve resumen:

pipa

  • Paquetes de Python solamente.
  • Recostack todo desde la fuente. EDITAR: pip ahora instala ruedas binarias, si están disponibles.
  • Bendecido por la comunidad central de Python (es decir, Python 3.4+ incluye código que aumenta automáticamente el pip).

conda

  • Python agnóstico. El foco principal de los paquetes existentes es para Python, y de hecho, conda en sí está escrito en Python, pero también puede tener paquetes conda para bibliotecas de C, o paquetes de R, o realmente cualquier cosa.
  • Instala binarios. Hay una herramienta llamada conda build que construye paquetes desde la fuente, pero conda install sí misma instala cosas de paquetes conda ya construidos.
  • Externo. Conda es el gestor de paquetes de Anaconda, la distribución Python proporcionada por Continuum Analytics, pero también puede usarse fuera de Anaconda. Puede usarlo con una instalación existente de Python si lo instala (aunque no se recomienda a menos que tenga una buena razón para usar una instalación existente).

En ambos casos:

  • Escrito en Python
  • Código abierto (conda es BSD y pip es MIT)

Las primeras dos viñetas de Conda son realmente lo que lo hace ventajoso en comparación con PIP para muchos paquetes. Dado que pip se instala desde la fuente, puede ser difícil instalar cosas con él si no puede comstackr el código fuente (esto es especialmente cierto en Windows, pero incluso puede ser cierto en Linux si los paquetes tienen alguna biblioteca C o FORTRAN difícil). dependencias). Conda se instala desde binario, lo que significa que alguien (por ejemplo, Continuum) ya ha hecho el trabajo duro de comstackr el paquete, por lo que la instalación es fácil.

También hay algunas diferencias si está interesado en crear sus propios paquetes. Por ejemplo, pip está construido sobre setuptools, mientras que conda usa su propio formato, que tiene algunas ventajas (como ser estático y, nuevamente, agnóstico de Python).

Las otras respuestas dan una descripción justa de los detalles, pero quiero resaltar algunos puntos de alto nivel.

pip es un administrador de paquetes que facilita la instalación, actualización y desinstalación de paquetes python . También funciona con entornos virtuales de python .

Conda es un administrador de paquetes para cualquier software (instalación, actualización y desinstalación). También funciona con entornos de sistemas virtuales.

Uno de los objectives con el diseño de conda es facilitar la administración de paquetes para todo el paquete de software requerido por los usuarios, de los cuales una o más versiones de python pueden ser solo una pequeña parte. Esto incluye bibliotecas de bajo nivel, como álgebra lineal, comstackdores, como mingw en Windows, editores, herramientas de control de versiones como Hg y Git, o cualquier otra cosa que requiera distribución y administración .

Para la administración de versiones, pip le permite cambiar y administrar múltiples entornos de Python .

Conda le permite cambiar y administrar múltiples entornos de propósito general a través de los cuales muchas otras cosas pueden variar en el número de versión, como bibliotecas C, comstackdores, suites de prueba, motores de base de datos, etc.

Conda no se centra en Windows, pero en Windows es, con mucho, la solución superior actualmente disponible cuando se requieren instalar y administrar complejos paquetes científicos que requieren comstackción.

Quiero llorar cuando pienso en cuánto tiempo he perdido al intentar comstackr muchos de estos paquetes a través de pip en Windows, o en la depuración fallida de pip install sesiones de pip install cuando se necesitaba la comstackción.

Como punto final, Continuum Analytics también aloja (gratis) binstar.org (ahora llamado anaconda.org ) para permitir que los desarrolladores de paquetes regulares creen sus propias stacks de software personalizadas (¡construidas!) Que sus usuarios de paquetes podrán conda install desde .

No para confundirlo aún más, pero también puede usar pip dentro de su entorno conda, que valida los comentarios generales de los gerentes específicos de python anteriores.

 conda install -n testenv pip source activate testenv pip  

También puede agregar pip a los paquetes predeterminados de cualquier entorno para que esté presente cada vez, por lo que no tiene que seguir el fragmento de código anterior.

Cita del artículo de Conda for Data Science en el sitio web de continuo:

Conda vs pip

Los progtwigdores de Python probablemente estén familiarizados con pip para descargar paquetes de PyPI y administrar sus requisitos. Si bien, conda y pip son gestores de paquetes, son muy diferentes:

  • Pip es específico para paquetes de Python y conda es independiente del lenguaje, lo que significa que podemos usar conda para administrar paquetes desde cualquier idioma. Pip comstack desde la fuente y conda instala binarios, eliminando la carga de la comstackción
  • Conda crea entornos de lenguaje independiente de forma nativa, mientras que pip se basa en virtualenv para administrar solo los entornos de Python. Aunque se recomienda usar siempre los paquetes de conda, conda también incluye pip, por lo que no tiene que elegir entre los dos. Por ejemplo, para instalar un paquete python que no tiene un paquete conda, pero está disponible a través de pip, simplemente ejecute, por ejemplo:
 conda install pip pip install gensim 

Para usuarios de WINDOWS

La situación de las herramientas de empaquetado “estándar” está mejorando recientemente:

  • en pypi en sí, ahora hay un 48% de paquetes de ruedas a partir de septiembre. 11 de 2015 (frente al 38% en mayo de 2015, 24% en septiembre de 2014),

  • el formato de rueda ahora se admite de forma inmediata según la última versión de Python 2.7.9,

La situación de las herramientas de empaquetado de “ajustes” + “ajustes” también está mejorando:

  • Puede encontrar casi todos los paquetes científicos en formato de rueda en http://www.lfd.uci.edu/~gohlke/pythonlibs ,

  • El proyecto mingwpy puede traer un día un paquete de ‘comstackción’ a los usuarios de Windows, permitiendo instalar todo desde la fuente cuando sea necesario.

El empaque “Conda” sigue siendo mejor para el mercado al que atiende, y destaca las áreas donde el “estándar” debería mejorar.

(Además, la especificación de dependencia de esfuerzo múltiple, en el sistema de ruedas estándar y en el sistema conda, o buildout, no es muy pythonic, sería bueno si todas estas técnicas de ‘núcleo’ de empaquetado pudieran converger, a través de una especie de PEP)

Citas de Conda: Mitos y conceptos erróneos (una descripción completa):

Mito # 3: Conda y pip son competidores directos

Realidad: Conda y pip tienen diferentes propósitos, y solo compiten directamente en un pequeño subconjunto de tareas: a saber, la instalación de paquetes de Python en entornos aislados.

Pip, que significa P ip I nstalls P ackages, es el administrador de paquetes oficialmente autorizado de Python, y se usa más comúnmente para instalar paquetes publicados en el Índice de Paquetes de Python (PyPI). Tanto pip como PyPI están gobernados y son compatibles con Python Packaging Authority (PyPA).

En resumen, pip es un administrador de propósito general para paquetes de Python; Conda es un gestor de entornos multiplataforma independiente del lenguaje. Para el usuario, la distinción más importante es probablemente esta: pip instala paquetes de python en cualquier entorno; Conda instala cualquier paquete dentro de los entornos de Conda. Si todo lo que está haciendo es instalar los paquetes de Python en un entorno aislado, conda y pip + virtualenv son en su mayoría intercambiables, módulo de alguna diferencia en el manejo de dependencias y la disponibilidad de paquetes. Por entorno aislado me refiero a conda-env o virtualenv, en el que puede instalar paquetes sin modificar la instalación de Python en su sistema.

Incluso dejando de lado el Mito # 2, si nos enfocamos solo en la instalación de los paquetes de Python, conda y pip sirven a diferentes audiencias y diferentes propósitos. Si quiere, por ejemplo, administrar paquetes de Python dentro de una instalación de Python de un sistema existente, conda no puede ayudarlo: por su diseño, solo puede instalar paquetes dentro de entornos de conda. Si quiere, por ejemplo, trabajar con los muchos paquetes de Python que dependen de dependencias externas (NumPy, SciPy y Matplotlib son ejemplos comunes), mientras realiza el seguimiento de esas dependencias de manera significativa, pip no puede ayudarlo: por diseño, administra paquetes de Python y solo paquetes de Python.

Conda y pip no son competidores, sino herramientas enfocadas en diferentes grupos de usuarios y patrones de uso.

pip es solo para Python

conda es solo para Anaconda + otros paquetes científicos como las dependencias R, etc. NO todos necesitan Anaconda que ya viene con Python. Anaconda es principalmente para aquellos que hacen Aprendizaje automático / Aprendizaje profundo, etc. El desarrollador informal de Python no ejecutará Anaconda en su computadora portátil.

¿Puedo usar pip para instalar iPython?

Claro, ambos (primer acercamiento en la página)

 pip install ipython 

y (tercer enfoque, segundo es conda )

Puedes descargar manualmente IPython desde GitHub o PyPI. Para instalar una de estas versiones, descomprímala y ejecute lo siguiente desde el directorio de origen de nivel superior usando la Terminal:

 pip install . 

Se recomiendan oficialmente las formas de instalación .

¿Por qué debería usar conda como otro gestor de paquetes de Python cuando ya tengo pip?

Como se dice aquí :

Si necesita un paquete específico, quizás solo para un proyecto, o si necesita compartir el proyecto con otra persona, conda parece más apropiado.

Conda supera pip en ( YMMV )

  • Proyectos que usan herramientas que no son de Python.
  • compartir con colegas
  • cambiando entre versiones
  • Cambio entre proyectos con diferentes versiones de biblioteca.

¿Cuál es la diferencia entre pip y conda?

Eso es ampliamente respondido por todos los demás.

Puede que haya encontrado una diferencia más de una naturaleza menor. Tengo mis entornos python bajo /usr lugar de /home o lo que sea. Para instalarlo, tendría que usar sudo install pip . Para mí, el efecto secundario no deseado de sudo install pip fue ligeramente diferente a lo que se informa ampliamente en otra parte: después de hacerlo, tuve que ejecutar python con sudo para importar cualquiera de los paquetes instalados en sudo . sudo conda a eso y eventualmente descubrí que podía usar sudo conda para instalar paquetes en un entorno bajo /usr que luego se importaba normalmente sin necesidad de sudo para python . Incluso utilicé sudo conda para arreglar un pip roto en lugar de usar sudo pip uninstall pip o sudo pip --upgrade install pip .