web-dev-qa-db-fra.com

Comment définir des variables d'environnement spécifiques lors de l'activation de l'environnement conda?

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.

34
PythonRunner

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.

48
asmeurer

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

7
Ian Goldby

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
3
jnmcclai