86 votos

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

Lo sé. pip es un gestor de paquetes para los paquetes de Python. Sin embargo, he visto que la instalación en el sitio web de IPython utiliza conda para instalar IPython.

¿Puedo utilizar pip ¿Instalar IPython? ¿Por qué debo usar conda como otro gestor de paquetes de Python cuando ya tengo pip ?

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

68voto

Martijn Pieters Puntos 271458

Citando al Blog de Conda :

Al haber estado involucrados en el mundo de Python durante tanto tiempo, todos conocemos pip, easy_install y virtualenv, pero estas herramientas no cumplían con todos nuestros requisitos específicos. El principal problema es que se centran en torno a Python, descuidando las dependencias de bibliotecas que no son de Python, como HDF5, MKL, LLVM, etc., que no tienen un setup.py en su código fuente y tampoco instalan archivos en el directorio site-packages de Python.

Así pues, Conda es una herramienta de empaquetado e instalación que pretende hacer más de lo que pip hace; manejar las dependencias de la biblioteca en el exterior de los paquetes de Python, así como los propios paquetes de Python. Conda también crea un entorno virtual, como virtualenv lo hace.

Como tal, Conda debe ser comparado con Construcción quizás, otra herramienta que le permite manejar tanto las tareas de instalación de Python como las que no lo son.

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

Desde que escribí esta respuesta, Anaconda ha publicado un nueva página en Comprensión de Conda y Pip que también se hace eco de esto:

Esto pone de manifiesto una diferencia clave entre conda y pip. Pip instala paquetes de Python mientras que conda instala paquetes que pueden contener software escrito en cualquier lenguaje. Por ejemplo, antes de usar pip, un intérprete de Python debe ser instalado a través de un gestor de paquetes del sistema o descargando y ejecutando un instalador. Conda, por otro lado, puede instalar paquetes de Python así como el intérprete de Python directamente.

y más adelante

Ocasionalmente se necesita un paquete que no está disponible como paquete conda pero que está disponible en PyPI y puede ser instalado con pip. En estos casos, tiene sentido intentar usar tanto conda como pip.

59voto

asmeurer Puntos 13185

Descargo de responsabilidad : Esta respuesta describe el estado de las cosas como hace una década, en ese momento pip no soportaba paquetes binarios. Conda fue creado específicamente para soportar mejor la construcción y distribución de paquetes binarios, en particular las bibliotecas de ciencia de datos con extensiones C. Como referencia, pip sólo obtuvo soporte generalizado para paquetes binarios portátiles con wheels (pip 1.4 en 2013) y el manylinux1 especificación (pip 8.1 en marzo de 2016). Véase el respuesta más reciente para más historia.

He aquí un breve resumen:

pip

  • Sólo paquetes de Python.
  • Compila todo desde el código fuente. EDIT: pip ahora instala ruedas binarias, si están disponibles.
  • Bendecido por el núcleo de la comunidad de Python (es decir, Python 3.4+ incluye código que arranca automáticamente pip).

conda

  • Agnóstico de Python. El enfoque principal de los paquetes existentes es para Python, y de hecho el propio Conda está escrito en Python, pero también puedes tener paquetes Conda para bibliotecas C, o paquetes R, o realmente cualquier cosa.
  • Instala los binarios. Hay una herramienta llamada conda build que construye paquetes desde el código fuente, pero conda install instala cosas de paquetes Conda ya construidos.
  • Externos. Conda es el gestor de paquetes de Anaconda, la distribución de Python proporcionada por Continuum Analytics, pero también puede utilizarse fuera de Anaconda. Puedes utilizarlo con una instalación de Python existente instalándolo con pip (aunque no se recomienda a menos que tengas una buena razón para utilizar una instalación existente).

En ambos casos:

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

Los dos primeros puntos de Conda son realmente los que lo hacen ventajoso sobre pip para muchos paquetes. Dado que pip instala desde el código fuente, puede ser doloroso instalar cosas con él si no se puede compilar el código fuente (esto es especialmente cierto en Windows, pero incluso puede ser cierto en Linux si los paquetes tienen algunas dependencias de bibliotecas C o FORTRAN difíciles). Conda se instala desde el binario, lo que significa que alguien (por ejemplo, Continuum) ya ha hecho el trabajo duro de compilar el paquete, y así la instalación es fácil.

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

32voto

vijay venkatesh Puntos 321

Para no confundirte más, pero también puedes usar pip dentro de tu entorno conda, lo que valida los comentarios anteriores de los gestores generales frente a los específicos de Python.

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

también puedes añadir pip a los paquetes por defecto de cualquier entorno para que esté presente cada vez y no tengas que seguir el fragmento anterior.

29voto

CheTesta Puntos 360

Cita de Conda para la ciencia de datos artículo en el sitio web de Continuum:

Conda vs pip

Los programadores de Python probablemente estén familiarizados con pip para descargar paquetes de PyPI y gestionar sus requisitos. Aunque, tanto conda como pip son gestores de paquetes, son muy diferentes:

  • Pip es específico para paquetes de Python y conda es agnóstico en cuanto al lenguaje, lo que significa que podemos usar conda para gestionar paquetes de cualquier lenguaje Pip compila desde el código fuente y conda instala los binarios, eliminando la carga de la compilación
  • Conda crea entornos independientes del lenguaje de forma nativa, mientras que pip se basa en virtualenv para gestionar sólo los entornos de Python Aunque se recomienda usar siempre los paquetes de conda, conda también incluye pip, así que no tienes que elegir entre los dos. Por ejemplo, para instalar un paquete de Python que no tiene un paquete de conda, pero está disponible a través de pip, simplemente ejecuta, por ejemplo
conda install pip
pip install gensim

29voto

cjrh Puntos 3960

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

pip es un gestor de paquetes que facilita la instalación, actualización y desinstalación de Paquetes de Python . También funciona con los sistemas virtuales de Python entornos.

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

Uno de los objetivos con el diseño de conda es facilitar la gestión de paquetes para toda la pila de software requerida por los usuarios, de la cual una o más versiones de Python pueden ser sólo una pequeña parte. Esto incluye bibliotecas de bajo nivel, como el álgebra lineal, compiladores, como mingw en Windows, editores, herramientas de control de versiones como Hg y Git, o cualquier otra cosa que requiera distribución y gestión .

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

Conda le permite cambiar y gestionar múltiples entornos de uso general a través de la cual muchas otras cosas pueden variar en el número de versión, como las bibliotecas C, o los compiladores, o los sitios de prueba, o los motores de bases de datos, etc.

Conda no está centrado en Windows, pero en Windows es, con mucho, la solución superior disponible actualmente cuando se requiere instalar y gestionar paquetes científicos complejos que requieren compilación.

Me dan ganas de llorar cuando pienso en el tiempo que he perdido tratando de compilar muchos de estos paquetes a través de pip en Windows, o de depurar los fallos pip install sesiones cuando se requería la compilación.

Por último, Continuum Analytics también alberga (de forma gratuita) binstar.org (ahora llamado anaconda.org ) para permitir a los desarrolladores de paquetes regulares crear sus propias pilas de software personalizadas (¡construidas!) que sus usuarios de paquetes podrán conda install de.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X