Quelqu'un sait-il comment définir automatiquement les variables d'environnement lors de l'activation d'un env dans conda? J'ai essayé d'éditer */bin/activate, mais cela ajoute les nouvelles variables d'environnement pour chaque nouvel env qui est créé. Je veux définir des variables env qui sont spécifiques à chaque env.
Utilisez les fichiers $CONDA_PREFIX/etc/conda/activate.d
et $CONDA_PREFIX/etc/conda/deactivate.d
, où $CONDA_PREFIX
est le chemin vers l'environnement.
Voir la section sur la gestion des environnements dans la documentation officielle pour référence.
La réponse acceptée (conda/activate.d
et conda/deactivate.d
) fonctionne assez bien, mais cela n'est pas pratique si vous voulez que les variables d'environnement soient contrôlées par la version sans placer l'environnement entier dans le contrôle de version également. En règle générale, vous ne souhaitez stocker que le environment.yml
fichier dans le contrôle de version.
(Je comprends que cela ne s'applique pas à tous les projets - parfois la raison entière de l'utilisation des variables d'environnement est empêcher que la configuration particulière soit stockée dans le contrôle de version.)
Ma préférence (sous Windows, mais le même principe s'appliquerait sous Linux) est de créer un (contrôlé par version) activate.cmd
fichier à la racine du répertoire du projet qui définit la ou les variables d'environnement, puis appelle le propre script activate.bat de conda.
Exemple (une configuration de pylône par projet):
set PYLINTRC=%cd%\pylintrc
@activate.bat %cd%\env
Notez que sous Windows, vous devez au moins définir les variables d'environnement avant appeler activate.bat
parce que l'appel à activate.bat
ne revient jamais au fichier de commandes appelant. Vous devez également nommer votre propre script autre chose que activate.bat
pour éviter la récursivité, c'est pourquoi j'ai choisi l'extension cmd
(qui est traitée par Windows comme un fichier batch dans ce contexte).
Donc, pour virtualenv sur Ubuntu, j'ai fait ci-dessous où mon nom d'environnement virtuel est my_env et mes variables environnementales que je veux persister étaient VAR_A et VAR_B:
virtualenv my_env
vim my_env/bin/activate
Cela ouvre le fichier et vous pouvez ajouter vos variables env à la fin du fichier comme ci-dessous:
# This is me env variables to persist
export VAR_A=/home/developer/my_workspace/var_a
export VAR_B=/home/developer/my_workspace/var_b
Quittez ensuite le fichier.
Activez votre virtualenv avec
source my_env/bin/activate
Ensuite, vos variables env devraient être bonnes. Peut vérifier comme ci-dessous:
printenv | grep VAR_
VAR_B=/home/developer/my_workspace/var_b
VAR_A=/home/developer/my_workspace/var_a