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


723

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

¿Puedo usar pippara instalar IPython? ¿Por qué debería usarlo condacomo otro administrador de paquetes de Python cuando ya lo tengo pip?

¿Cuál es la diferencia entre pipy conda?


Leer detenidamente la página de instalación verá instrucciones completas para instalar con pip y que conda/ enpgkestá dirigido a new users who want to get up and running with minimal effort: Pabellón / anaconda son environement independiente, que no interfieren con el pitón del sistema (como Venv pero más potente). Por cierto IPyhton, no iPython (mayúscula I)
Matt

3
Una diferencia es que pip puede instalar muchas más cosas que conda: pip puede instalar cualquier cosa desde pypi en un solo comando. conda requiere tres comandos: esqueleto, compilación, instalación y posiblemente más si eso no funciona. pip puede instalar cualquier cosa desde github o source en un solo comando. conda requiere escribir una "receta", lo cual no es fácil, especialmente porque la documentación siempre parece ser incorrecta / desactualizada.
endolito

55
Pregunta relacionada: ¿Cuáles son las VENTAJAS de pip over conda? Veo mucha defensa de Anaconda a continuación, pero nada para pip. ¿Por qué el pip sigue siendo el estándar, si anaconda es tan genial?
Brian Postow

24
Esta cita me parece esclarecedora: " Pip es un administrador de paquetes y Virtualenv es un administrador de entorno. Conda es ambas cosas". ( ref. )
Atcold

1
Observación: Solía ​​pensar que conda implicaba descargar un billón de paquetes, pero esto ya no es cierto: puede instalar miniconda, que parece ser esencialmente el administrador de paquetes, conda.io/docs/install/quick.html
Hugh Perkins

Respuestas:


521

Citando del blog de Conda :

Después de haber estado involucrado 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 problema principal es que se centran en Python, descuidando las dependencias de la biblioteca 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 empaque e instalador que tiene como objetivo hacer más de lo que piphace; manejar las dependencias de la biblioteca fuera de los paquetes de Python, así como los paquetes de Python en sí. Conda también crea un entorno virtual, como lo virtualenvhace.

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

Debido a que Conda presenta un nuevo formato de empaque, no puede usar pipy Conda indistintamente; pipno se puede instalar el formato del paquete Conda. Puede usar 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 Comprender Conda y Pip , que también refleja esto:

Esto destaca 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 está disponible en PyPI y se puede instalar con pip. En estos casos, tiene sentido tratar de usar tanto conda como pip.


18
Gracias por tu explicación. Sin embargo, todavía estoy confundido con si Conda puede reemplazar el pip. es decir, ¿puede Conda hacer todo lo que pip puede hacer?
lazywei

10
@lazywei: no creo que pueda; no parece que Conda sea compatible con el formato de archivo de rueda, por ejemplo. Tienen diferentes objetivos.
Martijn Pieters

45
@ naught101 "Solo crea una receta" Eso no es tan fácil como escribir pip install.
endolito

23
¿Pueden explicarme qué sucedería si usaras pip y conda para instalar el mismo paquete, excepto con una versión diferente, que Python usaría cuando los importes?
Lance Ruo Zhang

44
@jrh: no puede instalar varias versiones del mismo paquete una al lado de la otra cuando usa el administrador de paquetes del sistema operativo, no como una característica principal. Conda gestiona entornos , cada uno con su propia combinación de paquetes instalados en versiones específicas. Entonces, el proyecto A, que se desarrolló hace algún tiempo, todavía puede aferrarse a una versión anterior de la biblioteca Foo (no hay recursos disponibles para actualizar el proyecto para que funcione con una versión más reciente), mientras que el proyecto B requiere la versión más reciente de la misma biblioteca.
Martijn Pieters

246

Aquí hay un breve resumen:

pipa

  • Paquetes de Python solamente.
  • 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 inicia automáticamente pip).

conda

  • Python agnóstico. El enfoque principal de los paquetes existentes es para Python, y de hecho Conda está escrito en Python, pero también puede tener paquetes Conda para bibliotecas C, paquetes R, o cualquier cosa.
  • Instala binarios. Hay una herramienta llamada conda buildque construye paquetes desde la fuente, pero conda installinstala cosas de paquetes Conda ya construidos.
  • Externo. Conda es el administrador de paquetes de Anaconda, la distribución de Python proporcionada por Continuum Analytics, pero también se puede usar fuera de Anaconda. Puede usarlo con una instalación existente de Python instalándolo pip (aunque esto 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)

Los primeros dos puntos de Conda son realmente los que lo hacen ventajoso sobre pip para muchos paquetes. Dado que las instalaciones de pip desde la 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 hay algunas diferencias si está interesado en crear sus propios paquetes. Por ejemplo, pip se construye sobre las herramientas de configuración, mientras que Conda usa su propio formato, que tiene algunas ventajas (como ser estático y, de nuevo, independiente de Python).


21
pip ya no construye todo desde la fuente. Si hay una rueda disponible, pip install --use-wheel <package>instalará un paquete integrado. Ver aquí: wheel.readthedocs.org/en/latest . Sin embargo, mi experiencia personal con la rueda es que hay tan pocos paquetes de ruedas científicas disponibles que sean puramente académicos. Y, por supuesto, la instalación de pip en su mayoría tampoco funciona en Windows si su entorno de compilación no está configurado correctamente. Así que por el momento, conda ftw.
Caleb Hattingh

44
Las ruedas aún son nuevas y no se usan por defecto, por lo que no es sorprendente que todavía no haya muchas. Sin embargo, Wheel todavía se ajusta a la categoría de "Python específico", lo que significa que puede ser un ajuste inadecuado para los paquetes que no son Python o los paquetes de Python que dependen de paquetes que no son Python.
Asmeurer

44
Tuve que desestimar esto: la segunda viñeta es solo una nota histórica ahora, pero también la seguirás más adelante. La principal diferencia en estos días es que pip es un administrador de paquetes, mientras que conda es más un administrador de entorno.
Shep

99
Es cierto que pip puede compilarse desde la fuente, pero esto se está volviendo cada vez menos frecuente a medida que más paquetes se mueven a la rueda: en estos días puedo instalar la mayoría de lo que necesito en unos segundos con pip. Entonces, no es que esta respuesta sea incorrecta, solo se está volviendo un poco desactualizada ya que pip ha mejorado bastante en los últimos años
Shep

44
Se ha Nunca sido cierto que el PIP sólo puede instalar desde el código fuente. Antes de las ruedas teníamos los huevos como el formato de instalación binario predeterminado y el formato de distribución recomendado para las instalaciones de Windows, y pip instalaría (y aún lo hará) los huevos si esa es la mejor opción disponible.
Martijn Pieters

96

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 con el diseño de conda es facilitar la administración de paquetes para toda la pila de software requerida 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, 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 gestión de versiones, pip le permite cambiar y administrar múltiples python entornos de .

Conda le permite cambiar y administrar múltiples entornos de uso general en los que varias otras cosas pueden variar en el número de versión, como bibliotecas C, compiladores, conjuntos de pruebas o motores de bases de datos, etc.

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

Quiero llorar cuando pienso en cuánto tiempo he perdido tratando de compilar muchos de estos paquetes a través de pip en Windows, o depurar pip installsesiones fallidas cuando se requirió 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 regulares crear sus propias pilas de software personalizadas (¡construidas!) Desde las cuales sus usuarios de paquetes podrán hacerlo conda install.


44
Según su punto final, el proyecto de conda-forge de terceros se ha convertido rápidamente en el enfoque estándar de la industria para publicar paquetes de Anaconda. Recientemente publicamos varios paquetes alojados en conda-forge para nuestro simulador de biología multifísica , y no puedo recomendar el proceso lo suficiente. Existe un componente de revisión por pares basado en PR de GitHub para enviar nuevas recetas a conda-forge, pero las ventajas en términos de automatización de conda-forge superan con creces la inversión inicial de tiempo. Bam!
Cecil Curry

@CecilCurry He importado Kerasen mi código, instalé anaconda en mi mac y Keras está condainstalado e pipinstalado. Entonces, cuando ejecuto mi código en la terminal, ¿cómo sé cuál kerasse está importando (el pipuno o el condauno)?
KPMG

25

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

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

También puede agregar pip a los paquetes predeterminados de cualquier entorno para que esté presente cada vez y no tenga que seguir el fragmento anterior.


Pensé que esto no se recomienda?
endolito

8
Se recomienda usar pip dentro de conda. Es mejor instalar usando conda, pero para cualquier paquete que no tenga una construcción conda, es perfectamente aceptable usar pip.
Bradley Kreider

2
nit: parece que sería la frase fully supported? fully recommendedimplica, mejor usar pip que conda, dentro de un entorno de conda, en mi opinión, ¿y no estoy seguro de que eso es lo que quieren decir?
Hugh Perkins

22

Cita del artículo de Conda for Data Science 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 administrar sus requisitos. Aunque, tanto conda como pip son administradores de paquetes, son muy diferentes:

  • Pip es específico para los paquetes de Python y conda es independiente del idioma, lo que significa que podemos usar conda para administrar paquetes desde cualquier idioma. Pip compila desde la fuente y conda instala binarios, eliminando la carga de la compilación
  • Conda crea entornos independientes del lenguaje de forma nativa, mientras que pip depende de virtualenv para administrar solo entornos Python. Aunque se recomienda usar siempre paquetes conda, conda también incluye pip, por lo que no tiene que elegir entre los dos. Por ejemplo, para instalar un paquete de 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

15

Citando 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: instalar paquetes de Python en entornos aislados.

Pip, que significa P ip I nstalls P ackages, es el administrador de paquetes sancionado oficialmente de Python, y se usa más comúnmente para instalar paquetes publicados en Python Package Index (PyPI). Tanto pip como PyPI están gobernados y respaldados por Python Packaging Authority (PyPA).

En resumen, pip es un administrador de propósito general para paquetes Python; conda es un administrador de entorno multiplataforma independiente del lenguaje. Para el usuario, la distinción más destacada es probablemente esta: pip instala paquetes de python en cualquier entorno; conda instala cualquier paquete dentro de entornos conda. Si todo lo que está haciendo es instalar paquetes de Python dentro de un entorno aislado, conda y pip + virtualenv son en su mayoría intercambiables, modulo 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 de su sistema.

Incluso dejando a un lado el Mito # 2, si nos centramos en la instalación de 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 existente de Python del sistema, conda no puede ayudarlo: por diseño, solo puede instalar paquetes dentro de entornos 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 que el seguimiento de esas dependencias de una 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 centradas en diferentes grupos de usuarios y patrones de uso.


1
No estoy seguro de que esto sea realmente cierto, más allá de una perspectiva de posicionamiento en el mercado. Por ejemplo, mire pytorch, que ofrece tres tipos de instalación: conda, pip, source, pytorch.org y recomienda: conda
Hugh Perkins

2
"Instalar paquetes de Python en entornos aislados" es algo para lo que la mayoría de los desarrolladores de Python usan pip.
Nick

@ Nick, ¿no es así cuando el desarrollador ya está en 'ese' entorno virtual? Creo que pip funciona en un entorno virtual e instala el paquete como si se estuviera instalando para un sistema, pero como dijo sanchos.s, instala solo paquetes de python y no se ocupa de las bibliotecas subyacentes. alguien por favor corrígeme si me equivoco.
Chan Kim

12

Para usuarios de WINDOWS

La situación de las herramientas de embalaje "estándar" está mejorando recientemente:

  • en pypi, ahora hay 48% de los 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 la rueda ahora es compatible con la última versión de Python 2.7.9,

La situación de las herramientas de embalaje "estándar" + "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 'compilación' a los usuarios de Windows, lo que permite instalar todo desde la fuente cuando sea necesario.

El empaque "Conda" sigue siendo mejor para el mercado al que sirve, y destaca áreas en las que el "estándar" debería mejorar.

(también, la especificación de dependencia de esfuerzo múltiple, en el sistema de rueda estándar y en el sistema conda, o construcción, no es muy pitónica, sería bueno si todas estas técnicas de 'núcleo' de empaquetado pudieran converger, a través de una especie de PEP)


8

pip Es un administrador de paquetes.

conda es tanto un administrador de paquetes como un administrador de entorno.

Detalle:

ingrese la descripción de la imagen aquí

Referencias


2

¿Puedo usar pip para instalar iPython?

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

pip install ipython

y (tercer enfoque, segundo es conda)

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

pip install .

son formas oficialmente recomendadas de instalación .

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

Como se dice aquí :

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

Conda supera pip in ( YMMV )

  • proyectos que usan herramientas que no son de Python
  • compartir con colegas
  • cambio entre versiones
  • cambiar 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.


1

pip es solo para Python

condaes 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 casual de Python no ejecutará Anaconda en su computadora portátil.


explicación simple, pero me enseñaron a ir directamente al sitio web de Anaconda y descargar la distribución Python 2.xo 3.x. ¿Por qué? > porque contiene todos los paquetes que necesitará un estudiante. Numpy, Scipy, matpliotlib, sklearn, etc. Esto es exactamente por qué hay una brecha en la comprensión de los detalles fundamentales más finos. Estudiante
Rene Duchamp

Sé que esta es una vieja respuesta en este momento, pero lo que has escrito sobre Conda / Anaconda me parece completamente falso.
AMC

0

Es posible que haya encontrado otra diferencia de naturaleza menor. Tengo mis entornos de Python en /usrlugar de/home o lo sea. Para instalarlo, tendría que usar sudo install pip. Para mí, el efecto secundario no deseado de la sudo install pipera ligeramente diferente a lo que se informó ampliamente en otra parte: después de hacerlo, tuve que correr pythoncon sudoel fin de importar cualquiera de los sudopaquetes -Instalación. Renuncié a eso y finalmente descubrí que podía usar sudo condapara instalar paquetes en un entorno en el /usrque luego se importaba normalmente sin necesidad de sudopermiso python. Incluso solía sudo condaarreglar un roto en piplugar de usar sudo pip uninstall pipo sudo pip --upgrade install pip.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.