Ustawiam zmienną środowiskową, do której chcę uzyskać dostęp w mojej aplikacji Python. Jak uzyskać jego wartość?
Ustawiam zmienną środowiskową, do której chcę uzyskać dostęp w mojej aplikacji Python. Jak uzyskać jego wartość?
Odpowiedzi:
Zmienne środowiskowe są dostępne poprzez os.environ
import os
print(os.environ['HOME'])
Lub możesz zobaczyć listę wszystkich zmiennych środowiskowych, używając:
os.environ
Czasami może być konieczne wyświetlenie pełnej listy!
# 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))
Domyślna instalacja języka Python w systemie Windows to C:\Python
. Jeśli chcesz się dowiedzieć podczas uruchamiania Pythona, możesz:
import sys
print(sys.prefix)
.get()
można również podać wartość domyślną.
Aby sprawdzić, czy klucz istnieje (zwraca True
lub False
)
'HOME' in os.environ
Możesz także użyć get()
podczas drukowania klucza; przydatne, jeśli chcesz użyć wartości domyślnej.
print(os.environ.get('HOME', '/home/username/'))
gdzie /home/username/
jest domyślna
"HOME" in os.environ
lub os.environ.get('HOME')
?
"HOME" in os.environ
przeciwko os.environ.get('HOME') is None
. Jak widać pierwszy jest znacznie bardziej czytelny i wygodny w pracy.
Pierwotne pytanie (pierwsza część) brzmiało „jak sprawdzać zmienne środowiskowe w Pythonie”.
Oto jak sprawdzić, czy ustawiony jest $ FOO:
try:
os.environ["FOO"]
except KeyError:
print "Please set the environment variable FOO"
sys.exit(1)
"if 'FOO' not in os.environ: ..."
blok
Możesz uzyskać dostęp do zmiennych środowiskowych za pomocą
import os
print os.environ
Spróbuj zobaczyć zawartość zmiennych środowiskowych PYTHONPATH lub PYTHONHOME, być może będzie to pomocne w przypadku drugiego pytania. Jednak powinieneś to wyjaśnić.
Jeśli chodzi o zmienne środowiskowe:
import os
print os.environ["HOME"]
Obawiam się, że będziesz musiał jeszcze bardziej uwydatnić swój drugi punkt, zanim możliwa będzie przyzwoita odpowiedź.
Właściwie można to zrobić w ten sposób:
import os
for item, value in os.environ.items():
print('{}: {}'.format(item, value))
Lub po prostu:
for i, j in os.environ.items():
print(i, j)
Aby wyświetlić wartość parametru:
print(os.environ['HOME'])
Lub:
print(os.environ.get('HOME')
Aby ustawić wartość:
os.environ['HOME'] = '/new/value'
str.format
to tylko fantazyjny dodatek.
>>> import os, pprint; pprint.pprint(list(os.environ.items()))
Jeśli planujesz używać kodu w produkcyjnym kodzie aplikacji WWW,
używając dowolnego frameworka internetowego, takiego jak Django / Flask, użyj projektów takich jak envparse , używając go możesz odczytać wartość jako zdefiniowany typ.
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)
UWAGA: autoenv kennethreitza jest zalecanym narzędziem do tworzenia zmiennych środowiskowych specyficznych dla projektu, należy pamiętać, że ci, którzy używają, autoenv
zachowaj .env
plik prywatny (niedostępny dla publicznego)
Dla django patrz ( 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')
Możesz także spróbować tego
Najpierw zainstaluj python-decouple
pip install python-decouple
zaimportuj go do swojego pliku
from decouple import config
Następnie pobierz zmienną env
SECRET_KEY=config('SECRET_KEY')
Przeczytaj więcej o bibliotece Pythona tutaj