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.

Variable de entorno Conda VIRTUAL_ENV

¿Existe una forma robusta de actualizar automáticamente (o establecer) una variable de entorno VIRTUAL_ENV igual a la variable de entorno CONDA_DEFAULT_ENV? Por ejemplo, al ejecutar conda activate <env_name> o conda deactivate.

Idealmente, cuando creo nuevos entornos no quiero tener que hacer nada adicional. Por ejemplo, si ejecuto conda create -n <env_name> && conda activate <env_name> esto debería actualizar automáticamente la variable de entorno VIRTUAL_ENV.

Me gustaría hacer esto como una solución que funcione con cualquier tema de shell (actualmente utilizando zsh en MacOS) que utilice la variable VIRTUAL_ENV para modificar la visualización del indicador.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma robusta de actualizar automáticamente la variable de entorno VIRTUAL_ENV para que sea igual a la variable de entorno CONDA_DEFAULT_ENV. Esto se puede lograr utilizando hooks de shell.

    Crea un script de shell con el siguiente código:

    if [ -n "$CONDA_DEFAULT_ENV" ]; then
        # Actualiza VIRTUAL_ENV con el nombre del entorno conda actual
        export VIRTUAL_ENV=$CONDA_PREFIX
    else
        # Si no se encuentra en un entorno conda, establece VIRTUAL_ENV como vacío
        export VIRTUAL_ENV=""
    fi
    

    Guarda este script como conda_autoenv.sh en un directorio de tu elección (por ejemplo, ~/.conda/scripts/).

    Luego, agrega el siguiente código al script de inicialización de tu shell (por ejemplo, ~/.zshrc, ~/.bashrc, etc.):

    # Fuente conda_autoenv.sh para actualizar VIRTUAL_ENV al activar/desactivar conda
    conda_hook_path=$(conda info --root)/etc/conda/activate.d/conda_autoenv.sh
    if [ -f "$conda_hook_path" ]; then
        source "$conda_hook_path"
    fi
    
    conda_hook_path=$(conda info --root)/etc/conda/deactivate.d/conda_autoenv.sh
    if [ -f "$conda_hook_path" ]; then
        source "$conda_hook_path"
    fi
    

    Esto importará el script conda_autoenv.sh cada vez que se active o desactive un entorno conda, actualizando la variable VIRTUAL_ENV en consecuencia.

    Al mantener actualizada la variable VIRTUAL_ENV, cualquier tema de shell que dependa de ella para modificar la apariencia del prompt debería seguir funcionando como se espera.

Comments are closed.