web-dev-qa-db-fra.com

Ensemble de condos LD_LIBRARY_PATH pour env uniquement

J'ai une installation de miniconda3 où j'ai créé un environnement virtuel appelé py35. J'ai quelques bibliothèques que je veux utiliser uniquement à partir de cet environnement. ils sont donc sous

 /.../miniconda3/envs/py35/libs

Cependant, ils ne sont pas trouvés dans l'environnement car LD_LIBRARY_PATH ne contient pas ledit dossier. Je veux maintenant définir LD_LIBRARY_PATH pour inclure le/lib uniquement lorsque je suis dans l'environnement virtuel.

Je pensais à modifier le script d'activation utilisé par miniconda pour démarrer l'environnement, mais je ne suis pas sûr que ce soit une pratique standard ou s'il existe un moyen plus facile d'y parvenir.

21
FlyingTeller

Vous pouvez définir des variables d'environnement lorsqu'un environnement est activé en modifiant le activate.d/env_vars.sh script. Voir ici: https://conda.io/docs/user-guide/tasks/manage-environments.html#macos-and-linux

Les parties clés de ce lien sont:

  1. Recherchez le répertoire de l'environnement conda dans votre fenêtre Terminal, tel que /home/jsmith/anaconda3/envs/analytics.

  2. Entrez dans ce répertoire et créez ces sous-répertoires et fichiers:

    cd /home/jsmith/anaconda3/envs/analytics
    mkdir -p ./etc/conda/activate.d
    mkdir -p ./etc/conda/deactivate.d
    touch ./etc/conda/activate.d/env_vars.sh
    touch ./etc/conda/deactivate.d/env_vars.sh
    
  3. Modifier ./etc/conda/activate.d/env_vars.sh comme suit:

    #!/bin/sh
    
    export MY_KEY='secret-key-value'
    export MY_FILE=/path/to/my/file/
    
  4. Modifier ./etc/conda/deactivate.d/env_vars.sh comme suit::

    #!/bin/sh
    
    unset MY_KEY
    unset MY_FILE
    

Lorsque vous exécutez source activate analytics, les variables d'environnement MY_KEY et MY_FILE sont définies sur les valeurs que vous avez écrites dans le fichier. Lorsque vous exécutez source deactivate, ces variables sont effacées.

28
darthbith

Je voulais juste ajouter que vous pouvez déclarer 2 variables dans le fichier activate.d/env_vars.sh, cela facilite la réinitialisation de la variable à l'état de pré-activation:

export OLD_LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH=/your/path:${LD_LIBRARY_PATH}

puis dans deactivate.d/env_vars.sh:

export LD_LIBRARY_PATH=${OLD_LD_LIBRARY_PATH}
unset OLD_LD_LIBRARY_PATH
19
Oleksandr