Per impostare e ottenere variabili d’ambiente in Python potete semplicemente usare il modulo os
:
import os# Set environment variablesos.environ = 'username'os.environ = 'secret'# Get environment variablesUSER = os.getenv('API_USER')PASSWORD = os.environ.get('API_PASSWORD')# Getting non-existent keysFOO = os.getenv('FOO') # NoneBAR = os.environ.get('BAR') # NoneBAZ = os.environ # KeyError: key does not exist.
Nota che usando getenv()
o il metodo get()
su una chiave di dizionario si ottiene None
se la chiave non esiste. Tuttavia, nell’esempio con BAZ
, se si fa riferimento a una chiave in un dizionario che non esiste, si avrà un KeyError
.
Le variabili d’ambiente sono utili quando si vuole evitare di codificare le credenziali di accesso o altre variabili nel codice. Per esempio, potreste aver bisogno di passare le credenziali API di un fornitore di servizi e-mail per inviare notifiche e-mail, ma non vorreste che queste credenziali fossero memorizzate nel vostro repository di codice. O forse hai bisogno che il tuo codice funzioni in modo leggermente diverso tra i tuoi ambienti di sviluppo, staging e produzione. In questo caso si potrebbe passare una variabile d’ambiente per dire alla propria applicazione in quale ambiente sta girando. Questi sono i tipici casi d’uso per le variabili d’ambiente.
Memorizzare le variabili d’ambiente locali
Dovreste scrivere il vostro codice Python in modo che sia in grado di accedere alle variabili d’ambiente da qualsiasi ambiente in cui sta girando. Questo potrebbe essere sia il vostro ambiente virtuale locale che state usando per lo sviluppo o un servizio su cui lo state ospitando. Un utile pacchetto che semplifica questo processo è Python Decouple, ecco come usarlo.
Prima installa Python Decouple nel tuo ambiente Python locale.
$ pip install python-decouple
Una volta installato, crea un file .env
nella root del tuo progetto che puoi poi aprire per aggiungere le tue variabili d’ambiente.
$ touch .env # create a new .env file$ nano .env # open the .env file in the nano text editor
Puoi quindi aggiungere le tue variabili d’ambiente in questo modo:
USER=alexKEY=hfy92kadHgkk29fahjsu3j922v9sjwaucahf
Poi salva (WriteOut) il file e chiudi nano. Le tue variabili d’ambiente sono ora memorizzate nel tuo file .env
. Se stai usando git, ricordati di aggiungere .env
al tuo file .gitignore
in modo da non commettere questo file di segreti nel tuo repository di codice.
Ora che avete le vostre variabili d’ambiente memorizzate in un file .env
, potete accedervi nel vostro codice Python in questo modo:
from decouple import configAPI_USERNAME = config('USER')API_KEY = config('KEY')
Il vantaggio di usare qualcosa come l’approccio precedente è che quando distribuite la vostra applicazione ad un servizio cloud, potete impostare le vostre variabili d’ambiente usando qualsiasi metodo o interfaccia del provider e il vostro codice Python dovrebbe essere ancora in grado di accedervi. Notate che è convenzione comune usare le lettere maiuscole per i nomi delle costanti globali nel vostro codice.
La maggior parte dei fornitori di servizi cloud avrà una CLI o un’interfaccia web che vi permette di configurare le variabili d’ambiente per i vostri ambienti di staging o produzione. Per una guida in questi casi dovrai fare riferimento alla loro documentazione su come impostare le variabili d’ambiente quando usi il loro servizio.
Entrare nella rete degli sviluppatori di Able
Se ti è piaciuto questo post potresti essere interessato alla rete degli sviluppatori di Able, un nuovo posto per gli sviluppatori di blog e trovare lavoro.