es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Verifique si el entorno de conda existe y créelo si no lo está en bash.

Tengo un script de construcción para ejecutar una aplicación simple de Python. Estoy tratando de configurarlo de manera que se ejecute para cualquier usuario que tenga conda instalado y en su PATH. Sin otros requisitos previos. Ya casi lo he logrado, pero me gustaría hacerlo más eficiente para los usuarios que regresan.

build_run.sh

conda init bash
conda env create --name RUN_ENV --file ../run_env.yml -q --force
conda activate RUN_ENV
python run_app.py
conda deactivate

Me gustaría que el script verifique si RUN_ENV ya existe y lo active en lugar de forzar su creación cada vez. Intenté esto:

ENVS=$(conda env list | awk '{print }')
if [[ conda env list = *RUN_ENV* ]]; then
   conda activate RUN_ENV
else 
   conda env create --name RUN_ENV --file ../run_env.yml -q
   conda activate RUN_ENV
   exit
fi;
python run_app.py
conda deactivate

pero siempre devolvía un valor falso e intentaba crear RUN_ENV.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para verificar si el RUN_ENV ya existe y activarlo en lugar de forzar su creación cada vez en el script de construcción, puedes usar el siguiente código:

    if conda info --envs | grep -q "RUN_ENV"; then
        echo "Se encontró un RUN_ENV existente, activándolo..."
        conda activate RUN_ENV
    else
        echo "No se encontró un RUN_ENV, creándolo..."
        conda env create --name RUN_ENV --file ../run_env.yml -q
        conda activate RUN_ENV
    fi
    

    Este código utiliza conda info --envs para listar todos los entornos disponibles y luego usa grep para buscar “RUN_ENV”. Si lo encuentra, activa el entorno y si no, lo crea y lo activa. Los comandos echo son solo con fines de registro.

    Ten en cuenta que la condición en la instrucción if utiliza grep -q para suprimir la salida y solo retornar el estado de salida. Esto se debe a que no necesitamos ver la salida, solo usar el estado de salida para determinar si el entorno existe o no.

Comments are closed.