Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=7ffcb26a-fab1-4e97-b294-e9e11cfb3e9e

Cómo gestionar diferentes entornos para Python con conda

Ahora que ya sabes montar tu entorno de trabajo con Python basado en Miniconda, vamos a ver cómo puedes gestionar varios entornos en paralelo con Conda y cómo puedes gestionar las dependencias para poder recuperarlas con facilidad siempre que quieras.

¿Para qué podemos necesitar algo así?

Cuando trabajas con proyectos de IA lo habitual es que quieras usar la versión más reciente de los paquetes que necesites. Sin embargo, si trabajas con otros o rescatas un proyecto anterior, querrás usar versiones específicas, no solo de los paquetes sino de también del propio runtime de Python.

También, a veces, ciertos paquetes necesitan versiones concretas de Python o de ciertos paquetes, incluso más antiguas que la que está disponible en un momento dado.

Todo esto hace que gestionar todo en un solo entorno de Python o conda sea complicado y propenso a problemas.

Para solventar este problema están los entornos de conda. En este vídeo te explico de manera práctica cómo crearlos y gestionarlos:

Aquí te dejo las principales instrucciones que vemos en el vídeo para que las puedas tener a mano:

Cómo crear y activar entornos de conda

Por defecto conda crea un entorno que se llama base, y que contiene la versión base de Python y los paquetes que necesita para funcionar todo bien.

Puedes ver los entornos que tienes creados en tu equipo con:

conda env list

Y podemos añadir un nuevo entorno con la instrucción:

conda create --name prueba

Esto crea un nuevo entorno llamado prueba que está vacío y que utiliza la misma versión de Python que el entorno de base. No llega con crearlo, sino que tenemos que activarlo para poder usarlo, lo cual se hace con:

conda activate prueba

Si ahora listamos nuestros entornos veremos que antes del nuevo entorno aparece un asterisco *, esto indica que es el entorno activo sobre el que estamos trabajando.

Ahora mismo ya podríamos instalar paquetes de Python aquí, y quedarían instalados en este entorno sin interferir con otros entornos, incluyendo el base.

OJO: el cambio de entornos no funciona desde PowerShell. Si trabajas con VS Code en Windows asegúrate de cambiar el terminal a Command Prompt para poder cambiar de entorno.

Para salir de un entorno y volver al base hay que usar conda deactivate. Si lo aplicamos y volvemos a listar los entornos, veremos que el entorno activo ahora es el base.

Crear entornos con versiones específicas de Python

Aparte de aislar los paquetes para que no haya interferencias otro de los grandes beneficios de usar entornos en conda es que podemos crearlos con versiones específicas de Python, incluso de Python 2, que pueden ser muy viejos. Esto nos da una gran flexibilidad a la hora de trabajar.

Por ejemplo, con esta instrucción creamos un entorno con la versión 2.7 de Python:

conda create -n py27 python:2.7

Donde -n es la versión abreviada de --name, py27 es el nombre que le he dado y con python:2.7 especifico la versión que me interesa tener en este entorno.

Llegados a este punto, es posible que conda nos pida instalar paquetes y bibliotecas concretas, quizá más antiguas, para poder dar soporte a esa versión.

Si se da este caso, conda nos lo listará y simplemente tendremos que aceptar para instalarlos. Estos paquetes solo estarán disponibles en este entorno.

Para verificar que se ha instalado la versión correcta activamos el entorno:

conda activate py27

y comprobamos la versión con:

python --version

También podremos verificar los paquetes instalados con conda list.

Eliminar un entorno de conda

Para eliminar un entorno de conda tenemos que desactivarlo primero si es que estamos dentro:

conda deactivate

y luego lo eliminamos con:

conda remove --name py27 --all

Fíjate en ese --all. Está ahí para asegurarnos de eliminar todos los paquetes que tenga dentro además del propio entorno, y así evitar que queden descolgados.

Cómo instalar paquetes Python con conda

En primer lugar nos cambiamos a "pruebas" para no trabajar sobre el entorno:

conda activate prueba

Vamos a recordar la versión de Python que teníamos, ya verás por qué:

python --version

y listamos los paquetes con conda list para comprobar qué tenemos instalado, que en este caso será ninguno.

Ahora, por ejemplo, vamos a instalar el paquete pandas en nuestro entorno (en el entorno base ya lo tienes por defecto):

Pandas es el paquete más utilizado del mundo para cargar, manipular, etiquetar, convertir y en general gestionar cualquier tipo de datos. Si vas a hacer análisis de datos vas a utilizar (sí o sí) pandas. Además, en Visual Studio Code lo necesitas para visualizar las variables en el visor, como ya hemos visto en el post anterior.

conda install pandas

En el vídeo vemos todos los paquetes que se van a instalar. Una cosa interesante es que actualiza Python también, que lo considera como un paquete más.

Python es simplemente otro paquete más para conda, así que podremos instalar la versión que queramos en un entorno con conda install python=x.y.z

Si ahora listamos los paquetes veremos todas las dependencias que tiene Pandas.

¿Y qué pasa si queremos llevarnos un proyecto en el que estamos trabajando a otro equipo? Pues que tendremos que llevarnos exactamente las mismas dependencias. Esto es lo que veremos en el siguiente punto.

Instalar todas las dependencias de un proyecto

En conda podemos instalar varios paquetes a la vez simplemente poniendo sus nombres (y también versiones si nos interesa) justo a continuación. Por ejemplo:

conda install numpy pandas matplotlib

Otra opción sería crear un archivo requirements.txt donde escribamos a mano el nombre de cada dependencia (uno por línea):

numpy
pandas
matplotlib

Y ahora podría instalarlo con:

conda install --file requirements.txt

¡OJO! Asegúrate de que este archivo esté codificado en UTF-8. Si no sabes cómo, en el vídeo te explico cómo comprobarlo en VS Code

Esto está bien cuando tenemos pocos paquetes, somos disciplinados y no nos olvidamos de meterlos a mano cuando los vamos necesitando, para guardar un registro.

Sin embargo, existe una opción mejor que consiste en exportar directamente el entorno que nos interese.

Exportar entornos de conda

Para exportar el entorno, primero nos aseguramos de que estamos trabajando sobre el entorno que nos interese y escribimos la siguiente instrucción:

conda env export > environment.yml

Este comando lo que hace es exportar todos los datos relativos al entorno en el que estamos trabajando en un archivo .yml, un archivo de texto plano.

Además, si usamos el nombre environment.yml, conda reconocerá este nombre, lo que nos será de mucha ayuda al clonarlo.

Por ejemplo, podemos recrear exactamente ese entorno en otro nuevo con:

conda env create -f environment.yml

Pero si ya estamos dentro de una carpeta que tiene ese archivo, lo usará automáticamente para instalar las dependencias porque reconocerá el nombre del archivo. Pero de todas formas es mucho mejor si se lo indicamos.

También podemos instalarlas en el entorno actual con:

conda env update -f .\environment.yml

Clonar un entorno de conda

Y también podemos clonar un entorno directamente en otro para seguir trabajando en paralelo con:

conda create -n miclon --clone prueba

En este caso el entorno "miclon" será un clon del entorno "prueba".

Un par de detalles sobre los entornos y Visual Studio Code

Un par de detalles ya para terminar: cuando estamos trabajando en un notebook en VS Code podemos ver arriba a la derecha el entorno en el que estamos trabajando, y si hacemos clic sobre él podremos cambiar de entorno.

Ahora bien, si hemos creado o modificado un nuevo entorno desde el terminal tendremos que reiniciar VS Code para que nos lo reconozca desde ahí.

Así que cuando trabajes con un notebook fíjate bien en qué entorno estás trabajando porque, si no te funciona, es posible que no estés en el entorno correcto.

Y por último, recuerda una vez más que si usas PowerShell desde el propio VS Code no funcionará el cambio de entorno, pero sí todo lo demás. Mejor usar cmd de toda la vida.

¡Espero que te resulte útil!

José Manuel Alarcón Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José Manuel Alarcón

¿Te ha gustado este post?
Pues espera a ver nuestro boletín mensual...

Suscríbete a la newsletter

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.