web-dev-qa-db-fra.com

appeler la source de conda activer à partir du script bash

J'essaie d'activer ma conda env via un script bash. Même si le script fonctionne correctement et que mon CHEMIN semble avoir été modifié dans le script, il est en quelque sorte réinitialisé après la fin du script. Je peux appeler source activate test à partir de la ligne cmd et cela fonctionne très bien. Un exemple avec sortie ci-dessous.

script:

PycharmProjects/test » cat ./example.sh echo "before calling source: $PATH" source activate test echo "after calling source: $PATH"

sortie:

./example.sh
before calling source: /Use rs/me/miniconda3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin

discarding /Users/me/miniconda3/bin from PATH
prepending /Users/me/miniconda3/envs/test/bin to PATH

after calling source: /Users/me/miniconda3/envs/test/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin`

mais si je echo $PATH une fois le script terminé, vous pouvez voir que le $PATH n'a pas changé (c'est-à-dire pas de /Users/me/miniconda3/envs/test/bin):

PycharmProjects/test » echo $PATH /Users/me/miniconda3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin

21
matt_k

J'ai trouvé ce qui suit pour fonctionner sur Mac OSX exécutant un shell bash:

#!/bin/bash
source /Users/yourname/anaconda/bin/activate your_env
python --version # example way to see that your virtual env loaded as expected

Assurez-vous de créer l'exécutable scripté avec:

chmod +x yourscript.bash
15
user3150079

Sur les versions plus récentes de conda (4.6+), j'ai remarqué que les travaux suivants fonctionnent:

eval "$(conda Shell.bash hook)"
conda activate <env-name>
14
Anthony Scopatz

Voir le lien ci-dessous,

digitalocean-how-to-read-and-set-environment-and-Shell-variables-on-a-linux-vps

ci-dessous est l'extrait du site Web,

En effet, les variables d'environnement ne sont transmises qu'aux processus enfants. Il n'y a pas de méthode intégrée pour définir les variables d'environnement du shell parent. Ceci est bon dans la plupart des cas et empêche les programmes d'affecter l'environnement d'exploitation à partir duquel ils ont été appelés.

2
Jithin Scaria