# 2.3.1.5 RDKit e instalación de ambientes

**Por medio del uso de ambientes puede ser posible separar las herramientas específicas (paquetes) para trabajar en diferentes proyectos que así lo requieran. Es una buena práctica no modificar el ambiente base, sino trabajar desde un nuevo ambiente específico cada vez que se inicia un proyecto.**

El comando general para la instalación de ambientes se presenta a continuación, y debe ser ejecutado sobre la terminal de Ubuntu:

```bash
conda create --name <nombre_para_el_ambiente> <paquete>=<versión>
```

En caso de que al final del comando no se especifique la versión del paquete a instalar, se instalará la versión más reciente.&#x20;

Para activar o desactivar el ambiente se utilizan los siguientes comandos:

```bash
conda activate <nombre_del_ambiente>
```

```bash
conda deactivate
```

Para listar los ambientes instalados se utiliza el siguiente comando:

```bash
conda env list
```

El ambiente sobre el que se esté trabajando aparecerá al principio de la línea de comando entre un paréntesis (ejemplo <mark style="color:blue;">`(base)`</mark>) y aparecerá marcado con un asterisco dentro del listado.

Para listar todos los paquetes instalados dentro de un ambiente, con sus respectivas versiones se utiliza el siguiente comando teniendo activo dicho ambiente (<mark style="color:blue;">`conda activate`</mark>` ``<nombre_del_ambiente>`):

```bash
conda list
```

Para consultar la versión de un paquete en particular dentro del ambiente:

```bash
conda list <nombre_del_paquete>
```

Para actualizar un paquete a su versión más reciente:

```bash
conda update <nombre_del_paquete>
```

Para instalar una versión específica de un paquete se utiliza el siguiente comando:

```bash
conda install <nombre_del_paquete>=<versión>
```

Es probable que alguna versión específica de un paquete requiera de una versión específica de otro paquete, por ejemplo de Python, por lo que se procede como sigue:

```bash
conda install python=<versión> <nombre_del_paquete>=<versión>
```

Para copiar todo el contenido de un ambiente a uno nuevo (este proceso se puede hacer con el ambiente activo o no):

{% code overflow="wrap" %}
```bash
conda create --name <nombre_para_el_ambiente_2> --copy --clone <nombre_del_ambiente_1>
```
{% endcode %}

En el caso de [RDKit](https://www.rdkit.org/docs/Install.html), que es un ambiente especializado para el trabajo en química informática, el proceso no es muy diferente, a excepción de que los archivos más recientes del ambiente provienen de un repositorio en específico (canal), por lo que el comando de instalación incluye esta fuente, como se muestra a continuación:

```bash
conda create -c conda-forge -n <nombre_para_el_ambiente> rdkit
```

Cuando un paquete no se encuentra disponible para su instalación dentro de la documentación básica de Anaconda, puede ser útil [consultar si se encuentra en un canal específico](https://anaconda.org/). Incluso, puede encontrarse alojado en múltiples canales, pero estar disponible más o menos actualizado, o para un sistema operativo en particular. El comando general para la instalación de un ambiente que se encuentra alojado dentro de un canal es el siguiente:

{% code overflow="wrap" %}
```bash
conda create -c <nombre_del_canal> -n <nombre_para_el_ambiente>  <nombre_del_paquete>
```
{% endcode %}

De forma análoga funciona para la instalación de un paquete dentro de un ambiente existente, el cual debe encontrarse activo para ser modificado:

```bash
conda install -c <nombre_del_canal> <nombre_del_paquete>
```

Para eliminar un paquete dentro de un ambiente, se debe contar con el ambiente activo previamente (<mark style="color:blue;">`conda activate`</mark>` ``<nombre_del_ambiente>`) y se procede con el siguiente comando:

```bash
conda remove <nombre_del_paquete>
```

Lo que puede comprobarse después consultando la versión del paquete/librería dentro del mismo ambiente (<mark style="color:blue;">`conda list`</mark>` ``<nombre_del_paquete>)`, en ese caso no debe aparecer ningún registro.

Para eliminar un ambiente con el que ya no se quiere contar, inicialmente dicho ambiente debe encontrarse desactivado (<mark style="color:blue;">`conda deactivate`</mark>), después se ingresa el comando:

```bash
conda env remove --name <nombre_del_ambiente>
```

Puede comprobarse su eliminación se consulta el listado de ambientes (<mark style="color:blue;">`conda env list`</mark>).

El uso de ambientes dentro de Conda realiza un _tracking_ automático de las versiones del ambiente que se tengan, es decir que cada modificación -adición de librerías, remoción, etc.- se guarda como una versión nueva del ambiente. Estas versiones pueden ser consultadas y además ser restablecidas, si así se quiere. Teniendo el ambiente en cuestión activado, se puede consultar el listado de versiones con el comando:

```bash
conda list --revision
```

Para restablecer un número de revisión se usa el comando:

```bash
conda install --revision <número_de_la_revisión>
```

También es posible exportar un ambiente completo de Anaconda a un archivo, y así mismo instalar ambientes desde archivos. Se exporta el archivo del ambiente activo con uno de los siguientes comandos:

{% code overflow="wrap" %}
```bash
conda env export --no-builds --file <nombre_del_archivo>.yml 
#Este comando remueve las especificaciones marcadas como builds, que pueden impedir la lectura por cualquier plataforma de sistema operativo
```
{% endcode %}

{% code overflow="wrap" %}
```bash
conda env export --from-history --file <nombre_del_archivo>.yml 
#Este comando especifica únicamente las modificaciones manuales que se realizaron al ambiente, y permite que Conda instale los paquetes/librerías pertinentes para complementar el ambiente al ser leído
```
{% endcode %}

Para instalar un ambiente desde un archivo se usa el siguiente comando:

```bash
conda env create --file <nombre_del_archivo>.yml
```

Para trabajar desde un ambiente específico en **VSCode** debe contarse antes con la extensión de Python, si se instala por primera vez puede recargarse la ventana de VSCode con Ctrl + R, después basta con seleccionar el kernel adecuado en la esquina superior derecha de la ventana de VSCode, dentro del archivo en particular. Cabe mencionar que como todo este proceso se realizó desde el subsistema de Linux, debe estarse [ejecutando VSCode sobre Ubuntu](broken-reference).

<figure><img src="https://4235622825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyzFDWCsANohM6QBx4kmk%2Fuploads%2FRDijmL97Td000vCnJMQU%2Fimage.png?alt=media&#x26;token=d958199c-d34d-495d-a70a-e461ca04387e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4235622825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyzFDWCsANohM6QBx4kmk%2Fuploads%2F3qydKxmEPAm5OeNe2xJq%2Fimage.png?alt=media&#x26;token=d4aadaf6-091e-4b72-81e3-85ce6bc50b3a" alt=""><figcaption></figcaption></figure>
