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

Resuelto lazywei asked hace 10 años • 15 respuestas

Sé que pipes un administrador de paquetes para paquetes de Python. Sin embargo, vi la instalación en el sitio web de IPython condapara instalar IPython.

¿ Puedo utilizar pippara instalar IPython? ¿ Por qué debería utilizar condaotro administrador de paquetes de Python cuando ya lo tengo pip?

¿ Cuál es la diferencia entre pipy conda?

lazywei avatar Jan 08 '14 18:01 lazywei
Aceptado

Citando del blog de Conda :

Habiendo estado involucrados en el mundo de Python durante tanto tiempo, todos conocemos pip, easy_install y virtualenv, pero estas herramientas no cumplieron con todos nuestros requisitos específicos. El principal problema es que se centran en Python, descuidando las dependencias de bibliotecas que no son de Python, como HDF5, MKL, LLVM, etc., que no tienen 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 empaquetado e instalador que apunta a hacer más de lo que piphace; manejar las dependencias de la biblioteca fuera de los paquetes de Python, así como los propios paquetes de Python. Conda también crea un entorno virtual, como virtualenvlo hace.

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

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

Desde que escribió esta respuesta, Anaconda ha publicado una nueva página sobre Comprensión de Conda y Pip , que también se hace eco de esto:

Esto resalta una diferencia clave entre conda y pip. Pip instala paquetes de Python, mientras que conda instala paquetes que pueden contener software escrito en cualquier idioma. Por ejemplo, antes de usar pip, se debe instalar un intérprete de Python a través de un administrador 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 se puede instalar con pip. En estos casos, tiene sentido intentar utilizar tanto conda como pip.

Martijn Pieters avatar Jan 08 '2014 11:01 Martijn Pieters

Descargo de responsabilidad : esta respuesta describe el estado de las cosas como era hace una década, en ese momento pip no admitía paquetes binarios. Conda se creó específicamente para respaldar mejor la creación y distribución de paquetes binarios, en particular bibliotecas de ciencia de datos con extensiones C. Como referencia, pip solo obtuvo soporte generalizado para paquetes binarios portátiles con ruedas (pip 1.4 en 2013) y la especificación manylinux1 (pip 8.1 en marzo de 2016). Consulte la respuesta más reciente para obtener más historia.

Aquí hay un breve resumen:

pepita

  • Solo paquetes de Python.
  • Compila 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 arranca automáticamente pip).

conda

  • Agnóstico de Python. El enfoque principal de los paquetes existentes es para Python y, de hecho, Conda está escrito en Python, pero también puede tener paquetes de Conda para bibliotecas C, paquetes R o cualquier cosa.
  • Instala binarios. Existe una herramienta llamada conda buildque crea paquetes desde el código fuente, pero conda installella misma instala cosas a partir de paquetes Conda ya creados.
  • Externo. conda es un administrador de entornos y paquetes. Está incluido en la distribución Anaconda Python proporcionada por Continuum Analytics (ahora llamada Anaconda, Inc.).

conda es un administrador de entorno escrito en Python y es independiente del idioma. Las funciones de administración del entorno de conda cubren la funcionalidad proporcionada por venv, virtualenv, pipenv, pyenv y otros administradores de paquetes específicos de Python. Puede usar conda dentro de una instalación de Python existente instalándolo con pip (aunque esto no se recomienda a menos que tenga una buena razón para usar una instalación existente). A partir de 2022, conda y pip no conocen completamente las actividades de administración de paquetes de cada uno dentro de un entorno virtual, ni son interoperables para la administración de paquetes de Python.

En ambos casos:

  • Escrito en Python
  • Código abierto (conda es BSD y pip es MIT)
  • Advertencia: si bien conda en sí es de código abierto, los repositorios de paquetes están alojados en Anaconda Inc y tienen restricciones en cuanto al uso comercial.

Los dos primeros puntos de conda son realmente los que lo hacen ventajoso sobre pip para muchos paquetes. Dado que pip se instala desde el código fuente, puede ser doloroso instalar cosas con él si no puede compilar 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 compilar el paquete, por lo que la instalación es fácil.

También existen algunas diferencias si está interesado en crear sus propios paquetes. Por ejemplo, pip se basa en herramientas de configuración, mientras que conda usa su propio formato, que tiene algunas ventajas (como ser estático y, nuevamente, independiente de Python).

asmeurer avatar Jan 08 '2014 23:01 asmeurer

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 de 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 objetivos del 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 solo una pequeña parte. Esto incluye bibliotecas de bajo nivel, como á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 administración .

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

Conda le permite alternar y administrar múltiples entornos de propósito general en los cuales muchas otras cosas pueden variar en número de versión, como bibliotecas C, compiladores, conjuntos de pruebas, motores de bases de datos, etc.

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

Quiero llorar cuando pienso en cuánto tiempo he perdido intentando compilar muchos de estos paquetes mediante pip en Windows o depurar pip installsesiones fallidas cuando se requería la compilación.

Como punto final, Continuum Analytics también aloja (gratis) binstar.org (ahora llamado anaconda.org ) para permitir a los desarrolladores de paquetes habituales crear sus propias pilas de software personalizadas (¡construidas!) desde las que podrán acceder sus usuarios de paquetes conda install.

Caleb Hattingh avatar Jan 09 '2014 01:01 Caleb Hattingh