¿Conda reemplaza la necesidad de virtualenv?

Resuelto Kritz asked hace 8 años • 10 respuestas

Recientemente descubrí Conda después de tener problemas para instalar SciPy, específicamente en una aplicación Heroku que estoy desarrollando.

Con Conda creas entornos, muy similar a lo que hace virtualenv . Mis preguntas son:

  1. Si uso Conda, ¿reemplazará la necesidad de virtualenv? Si no, ¿cómo uso los dos juntos? ¿Debo instalar virtualenv en Conda o Conda en virtualenv?
  2. ¿Todavía necesito usar pip? Si es así, ¿aún podré instalar paquetes con pip en un entorno aislado?
Kritz avatar Dec 21 '15 22:12 Kritz
Aceptado
  1. Conda reemplaza virtualenv. En mi opinión es mejor. No se limita a Python, sino que también se puede utilizar en otros lenguajes. En mi experiencia, proporciona una experiencia mucho más fluida, especialmente para paquetes científicos. La primera vez que instalé MayaVi correctamente en Mac fue con conda.

  2. Todavía puedes usar pip. De hecho, condase instala pipen cada nuevo entorno. Conoce los paquetes instalados por pip.

Por ejemplo:

conda list

enumera todos los paquetes instalados en su entorno actual. Los paquetes instalados por Conda se muestran así:

sphinx_rtd_theme          0.1.7                    py35_0    defaults

y los instalados vía piptienen el <pip>marcador:

wxpython-common           3.0.0.0                   <pip>
Mike Müller avatar Dec 21 '2015 15:12 Mike Müller

Utilizo ambos y (a partir de enero de 2020) tienen algunas diferencias superficiales que se prestan a usos diferentes para mí. De forma predeterminada, Conda prefiere administrar una lista de entornos en una ubicación central, mientras que virtualenv crea una carpeta en el directorio actual. Lo primero (centralizado) tiene sentido si, por ejemplo, está haciendo aprendizaje automático y solo tiene un par de entornos amplios que utiliza en muchos proyectos y desea acceder a ellos desde cualquier lugar. Esto último (por carpeta de proyecto) tiene sentido si está realizando pequeños proyectos únicos que tienen conjuntos de requisitos de biblioteca completamente diferentes que realmente pertenecen más al proyecto en sí.

El entorno vacío que crea Conda tiene aproximadamente 122 MB, mientras que el entorno virtual tiene aproximadamente 12 MB, por lo que esa es otra razón por la que quizás prefiera no distribuir entornos Conda por todas partes.

Finalmente, otra indicación superficial de que Conda prefiere sus entornos centralizados es que (nuevamente, de forma predeterminada) si crea un entorno Conda en su propia carpeta de proyecto y lo activa, el prefijo de nombre que aparece en su shell es (demasiado largo) absoluto. ruta a la carpeta. Puedes solucionarlo dándole un nombre, pero virtualenv hace lo correcto de forma predeterminada.

Espero que esta información se vuelva obsoleta rápidamente a medida que los dos administradores de paquetes compitan por el dominio, pero estas son las compensaciones a partir de hoy :)

EDITAR: Revisé la situación nuevamente el 4/2021 y no ha cambiado. Todavía es incómodo realizar una instalación en el directorio local con conda.

Pat Niemeyer avatar Jan 15 '2020 16:01 Pat Niemeyer

La respuesta corta es que solo necesitas conda.

  1. Conda combina efectivamente la funcionalidad de pip y virtualenv en un solo paquete, por lo que no necesita virtualenv si usa conda.

  2. Te sorprendería saber cuántos paquetes admite conda. Si no es suficiente, puedes usar pip en conda.

Aquí hay un enlace a la página de conda que compara conda, pip y virtualenv:

https://docs.conda.io/projects/conda/en/latest/commands.html#conda-vs-pip-vs-virtualenv-commands .

Mad Physicist avatar Dec 21 '2015 15:12 Mad Physicist