¿Cómo se puede actualizar un entorno conda preexistente con otro archivo .yml? Esto es extremadamente útil cuando se trabaja en proyectos que tienen varios archivos de requisitos, es decir base.yml, local.yml, production.yml , etc.
Por ejemplo, a continuación hay un archivo base.yml que tiene paquetes conda-forge, conda y pip:
base.yml
name: myenv channels: - conda-forge dependencies: - django=1.10.5 - pip: - django-crispy-forms==1.6.1 El entorno real se crea con: conda env create -f base.yml .
Más adelante, se deben agregar paquetes adicionales a base.yml . Otro archivo, digamos local.yml , necesita importar esas actualizaciones.
Los intentos anteriores para lograr esto incluyen:
creando un archivo local.yml con una definición de importación:
channels: dependencies: - pip: - boto3==1.4.4 imports: - requirements/base. Y luego ejecute el comando: conda install -f local.yml .
Esto no funciona. ¿Alguna idea?
Intente usar conda env update :
conda activate myenv conda env update --file local.yml --prune --prune desinstala las dependencias que se eliminaron de local.yml , como se indica en esta respuesta de @Blink.
O sin necesidad de activar el entorno (gracias @NumesSanguis):
conda env update --name myenv --file local.yml --pruneConsulte Actualización de un entorno en la Guía del usuario de Conda.
La respuesta sugerida es parcialmente correcta. Deberá agregar la opción --prune para desinstalar también los paquetes que se eliminaron del archivo environment.yml. Comando correcto:
conda env update -f local.yml --pruneLa respuesta de alkamid está en las líneas correctas, pero descubrí que Conda no puede instalar nuevas dependencias si el entorno ya está activo. Desactivar el entorno primero resuelve esto:
source deactivate; conda env update -f whatever.yml; source activate my_environment_name; # Must be AFTER the conda env update line!