Cómo eliminar entornos de conda en Mac y liberar el espacio
Unos meses de trabajo con datos dejan en un Mac entornos de conda que nadie recuerda haber creado: uno por curso, uno por artículo, uno para una herramienta que probaste una vez. Cada uno contiene su propio Python y sus paquetes, y junto con la caché de paquetes de conda pueden ocupar decenas de gigabytes. Eliminarlos son dos comandos, pero el espacio a menudo no vuelve tras el primero, y la razón es cómo conda comparte archivos entre entornos.
Esta guía explica cómo listar lo que tienes, eliminar un entorno por nombre o por ruta, por qué la cifra del disco apenas cambia después y cómo conda clean devuelve el resto. Vale por igual para Anaconda, Miniconda, Miniforge y Mambaforge. Para quitar el propio conda, desinstalar Python y Node en Mac lo cubre.
Lista tus entornos
conda env list
La misma lista sale con conda info --envs. El entorno activo lleva un asterisco y cada línea muestra su carpeta, normalmente ~/miniconda3/envs/<name> o ~/anaconda3/envs/<name>. La línea sin nombre es base, el entorno donde vive el propio conda; déjala en paz.
Para ver cuánto usa cada uno:
conda info --size
Eso informa del uso de disco de conda por entorno. Si tu versión de conda no lo tiene, mide las carpetas directamente:
du -sh ~/miniconda3/envs/* ~/miniconda3/pkgs
Cambia miniconda3 por anaconda3, miniforge3 o mambaforge según tu instalación.
Guárdalo antes de eliminarlo
Un entorno que quizá necesites otra vez cuesta un archivo pequeño conservarlo. Actívalo y expórtalo:
conda activate myenv
conda env export --from-history > myenv.yml
--from-history escribe solo los paquetes que pediste, así que el archivo se puede reconstruir en otro Mac o con un conda más nuevo. Para una reconstrucción exacta byte a byte en la misma plataforma, usa en su lugar conda list --explicit > myenv-spec.txt. Cualquiera de los dos archivos recupera el entorno más adelante con conda create --file myenv.yml (o conda env create --file myenv.yml en versiones antiguas).
Elimina un entorno
La documentación de conda dice que el entorno no debe estar activo al eliminarlo, así que sal primero:
conda deactivate
conda remove --name myenv --all
conda env remove --name myenv hace lo mismo. Añade --dry-run para ver qué se iría sin eliminar nada.
Un entorno creado con --prefix en algún sitio fuera de envs, por ejemplo dentro de la carpeta de un proyecto, no tiene un nombre que conda pueda buscar. Elimínalo por ruta:
conda remove --prefix ~/projects/thesis/.env --all
Mover la carpeta de un entorno a la Papelera desde el Finder libera los mismos archivos, pero el comando es el camino más limpio: también actualiza el registro de entornos del propio conda, que leen conda env list y conda clean.
Por qué no volvió el espacio
Conda descarga cada paquete una sola vez a su caché de paquetes, pkgs en la carpeta de instalación, y luego enlaza esos archivos con enlaces duros en cada entorno que los usa. La documentación de conda lo resume así: los entornos ocupan poco espacio gracias a los enlaces duros. Un enlace duro es un segundo nombre para los mismos datos en el disco, así que los datos permanecen hasta que desaparece el último nombre.
Eliminar un entorno borra sus nombres. La copia en pkgs sigue ahí, por eso du sobre la carpeta de instalación se ve casi igual que antes. La caché también conserva los archivos .conda y .tar.bz2 descargados y los archivos de índice de los canales, y ningún entorno necesita nada de eso una vez instalado un paquete.
Recupera el resto con conda clean
Primero una vista previa:
conda clean --all --dry-run
Luego ejecútalo:
conda clean --all
| Opción | Qué elimina |
|---|---|
-i, --index-cache |
Archivos de índice de canales descargados; conda los vuelve a bajar |
-t, --tarballs |
Archivos de paquetes ya extraídos en la caché |
-p, --packages |
Paquetes extraídos a los que ningún entorno enlaza |
-c, --tempfiles |
Archivos temporales sobrantes |
-l, --logfiles |
Archivos de registro |
-a, --all |
Todo lo anterior |
Hay un aviso en la documentación de conda que conviene leer antes de usar -p: solo comprueba los entornos que lista conda info --envs. Un entorno que no conoce, por ejemplo uno creado por otra instalación de conda o registrado con otro usuario, puede perder paquetes a los que sigue enlazado. Si guardas entornos fuera de los lugares habituales, ejecuta primero conda env list y comprueba que aparecen.
No uses --force-pkgs-dirs. Borra todas las cachés de paquetes con permiso de escritura, no forma parte de --all a propósito y rompe los entornos que dependen de esos archivos.
Mamba y otras instalaciones
Mamba acepta los mismos comandos: mamba env list, mamba remove --name myenv --all, mamba clean --all. Si tienes más de un instalador, por ejemplo Anaconda de hace años y Miniforge ahora, cada uno tiene sus propios envs y pkgs; haz la limpieza con el conda de cada uno, o mira ambas carpetas en el Finder antes de suponer que el espacio se fue a otra parte. CONDA_PKGS_DIRS y CONDA_ENVS_PATH mueven esas carpetas si están definidas en tu shell.
Dónde encaja Mole
La pestaña Limpiar de Mole busca instalaciones de conda en tu carpeta personal (~/miniconda3, ~/anaconda3, ~/miniforge3, ~/mambaforge y las dos de ~/opt) y solo cuenta las que tienen carpetas conda-meta y pkgs de verdad. En Herramientas de desarrollo muestra un grupo Conda Cache con dos tipos de filas: archivos de paquetes de pkgs cuya copia extraída ya está en su sitio y que no se han tocado en un día, y la carpeta de índices pkgs/cache, lo mismo que elimina conda clean --index-cache. Cada fila está marcada como Revisar y empieza sin seleccionar. Mole nunca toca paquetes extraídos ni entornos, nunca ejecuta conda y mueve a la Papelera lo que marques. Eliminar los entornos en sí sigue siendo trabajo de conda remove. Para otras cachés de desarrollo, limpiar cachés de desarrollo en Mac repasa Xcode, npm y el resto.
Preguntas frecuentes
¿Es seguro borrar a mano la carpeta pkgs?
No entera. Los entornos están enlazados con enlaces duros a archivos que hay en ella, y conda espera sus registros ahí. Usa conda clean --all, que elimina solo lo que ningún entorno necesita.
¿Eliminar un entorno borra mis notebooks y mis datos?
Solo se van los archivos dentro de la carpeta del entorno. Los notebooks, scripts y datos de tus carpetas de proyecto se quedan, salvo que hayas creado el entorno con --prefix dentro del proyecto y guardado datos en esa misma carpeta.
¿Puedo eliminar el entorno base?
No. Base contiene el propio conda. Para quitarlo todo, desinstala conda, algo que cubre la guía para desinstalar Python y Node.
¿Conda clean --all ralentizará mi próxima instalación?
Un poco. Conda vuelve a descargar el índice y los paquetes que ya no tenga en la caché. Tus entornos siguen funcionando.