¿Conda reemplaza la necesidad de virtualenv?
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:
- 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?
- ¿Todavía necesito usar pip? Si es así, ¿aún podré instalar paquetes con pip en un entorno aislado?
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
.Todavía puedes usar
pip
. De hecho,conda
se instalapip
en 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 pip
tienen el <pip>
marcador:
wxpython-common 3.0.0.0 <pip>
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.
La respuesta corta es que solo necesitas conda.
Conda combina efectivamente la funcionalidad de pip y virtualenv en un solo paquete, por lo que no necesita virtualenv si usa conda.
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 .