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
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
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>
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.