Ho impostato una variabile d'ambiente a cui voglio accedere nella mia applicazione Python. Come ottengo il suo valore?
Ho impostato una variabile d'ambiente a cui voglio accedere nella mia applicazione Python. Come ottengo il suo valore?
Risposte:
Le variabili d'ambiente sono accessibili tramite os.environ
import os
print(os.environ['HOME'])
Oppure puoi vedere un elenco di tutte le variabili d'ambiente usando:
os.environ
Come a volte potresti aver bisogno di vedere un elenco completo!
# using get will return `None` if a key is not present rather than raise a `KeyError`
print(os.environ.get('KEY_THAT_MIGHT_EXIST'))
# os.getenv is equivalent, and can also give a default value instead of `None`
print(os.getenv('KEY_THAT_MIGHT_EXIST', default_value))
L'installazione predefinita di Python su Windows è C:\Python
. Se vuoi scoprirlo mentre esegui python puoi fare:
import sys
print(sys.prefix)
.get()
può anche essere assegnato un valore predefinito.
Per verificare se la chiave esiste (restituisce True
o False
)
'HOME' in os.environ
È inoltre possibile utilizzare get()
quando si stampa la chiave; utile se si desidera utilizzare un valore predefinito.
print(os.environ.get('HOME', '/home/username/'))
dove /home/username/
è l'impostazione predefinita
"HOME" in os.environ
o os.environ.get('HOME')
?
"HOME" in os.environ
vs os.environ.get('HOME') is None
. Come puoi vedere prima è molto più leggibile e comodo con cui lavorare.
La domanda originale (prima parte) era "come controllare le variabili di ambiente in Python".
Ecco come verificare se $ FOO è impostato:
try:
os.environ["FOO"]
except KeyError:
print "Please set the environment variable FOO"
sys.exit(1)
"if 'FOO' not in os.environ: ..."
blocco
È possibile accedere alle variabili di ambiente utilizzando
import os
print os.environ
Prova a vedere il contenuto delle variabili di ambiente PYTHONPATH o PYTHONHOME, forse questo sarà utile per la tua seconda domanda. Tuttavia dovresti chiarirlo.
Per quanto riguarda le variabili d'ambiente:
import os
print os.environ["HOME"]
Temo che dovresti approfondire un po 'di più il tuo secondo punto prima che sia possibile una risposta decente.
import os
for a in os.environ:
print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")
Ciò stamperà tutte le variabili di ambiente insieme ai loro valori.
In realtà si può fare questo via:
import os
for item, value in os.environ.items():
print('{}: {}'.format(item, value))
O semplicemente:
for i, j in os.environ.items():
print(i, j)
Per visualizzare il valore nel parametro:
print(os.environ['HOME'])
O:
print(os.environ.get('HOME')
Per impostare il valore:
os.environ['HOME'] = '/new/value'
str.format
è solo un'aggiunta fantasiosa.
>>> import os, pprint; pprint.pprint(list(os.environ.items()))
Se stai pianificando di utilizzare il codice in un codice di applicazione Web di produzione,
usando qualsiasi framework web come Django / Flask, usa progetti come envparse , usandolo puoi leggere il valore come tipo definito.
from envparse import env
# will read WHITE_LIST=hello,world,hi to white_list = ["hello", "world", "hi"]
white_list = env.list("WHITE_LIST", default=[])
# Perfect for reading boolean
DEBUG = env.bool("DEBUG", default=False)
NOTA: l'autoenv di kennethreitz è uno strumento consigliato per creare variabili di ambiente specifiche del progetto, si prega di notare che coloro che lo utilizzano autoenv
mantengono il .env
file privato (inaccessibile al pubblico)
C'è anche un numero di grandi biblioteche. Envs, ad esempio, ti permetterà di analizzare gli oggetti dalle variabili di ambiente, che è rad. Per esempio:
from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']
Per django consultare ( https://github.com/joke2k/django-environ )
$ pip install django-environ
import environ
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env()
# False if not in os.environ
DEBUG = env('DEBUG')
# Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')
Puoi anche provare questo
Innanzitutto, installa python-decouple
pip install python-decouple
importalo nel tuo file
from decouple import config
Quindi ottenere la variabile env
SECRET_KEY=config('SECRET_KEY')
Maggiori informazioni sulla libreria Python qui