¿Cómo se puede actualizar un entorno conda preexistente con otro archivo .yml? Esto es extremadamente útil cuando se trabaja en proyectos que tienen múltiples archivos de requisitos, es decir base.yml, local.yml, production.yml
, etc.
Por ejemplo, a continuación se muestra un base.yml
archivo con 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 actual se crea con:
conda env create -f base.yml
.
Más adelante, se deben agregar paquetes adicionales base.yml
. Otro archivo, por ejemplo local.yml
, necesita importar esas actualizaciones.
Los intentos anteriores para lograr esto incluyen:
crear un local.yml
archivo con una definición de importación:
channels:
dependencies:
- pip:
- boto3==1.4.4
imports:
- requirements/base.
Y a continuación, ejecute el comando:
conda install -f local.yml
.
Esto no funciona. ¿Alguna idea?
Respuestas:
Intente usar la actualización de conda env :
O sin la necesidad de activar el entorno (gracias @NumesSanguis):
fuente
-f
yfile.yml
. Eliminar el signo igual hará que la finalización de la pestaña funcione en el.yml
nombre del archivo.--name env_name
para ignorar cualquiername: foo
etiquetalocal.yml
. También evita la necesidad de activar myenv primero. Comando completo:conda env update --name env_name --file local.yml
De: stackoverflow.com/a/45525593/3399066 comentario deLa respuesta sugerida es parcialmente correcta. Deberá agregar la opción --prune para desinstalar también los paquetes que se eliminaron del environment.yml. Comando correcto:
fuente
La respuesta de alkamid está en la línea correcta, pero descubrí que Conda no puede instalar nuevas dependencias si el entorno ya está activo. La desactivación del entorno primero resuelve esto:
fuente
-n <environment name>
, pero de manera predeterminada parece funcionar con el entorno esperado (tal vez la opción activa más reciente, o simplemente una opción de entorno predeterminada)