Aby ustawić i uzyskać zmienne środowiskowe w Pythonie, możesz po prostu użyć modułu 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.
Zauważ, że użycie metody getenv()
lub get()
na kluczu słownika zwróci None
, jeśli klucz nie istnieje. Jednak w przykładzie z BAZ
, jeśli odwołasz się do klucza w słowniku, który nie istnieje, podniesie to KeyError
.
Zmienne środowiskowe są przydatne, gdy chcesz uniknąć twardego kodowania poświadczeń dostępu lub innych zmiennych w kodzie. Na przykład, możesz potrzebować przekazać poświadczenia API dla dostawcy usług poczty elektronicznej, aby wysyłać powiadomienia e-mail, ale nie chcesz, aby te poświadczenia były przechowywane w twoim repozytorium kodu. A może potrzebujesz, aby Twój kod działał nieco inaczej pomiędzy środowiskiem deweloperskim, inscenizacyjnym i produkcyjnym. W takim przypadku możesz przekazać zmienną środowiskową, która powie Twojej aplikacji w jakim środowisku jest uruchomiona. Są to typowe przypadki użycia zmiennych środowiskowych.
Przechowywanie lokalnych zmiennych środowiskowych
Powinieneś napisać swój kod Pythona tak, aby był on w stanie uzyskać dostęp do zmiennych środowiskowych z dowolnego środowiska, w którym jest uruchomiony. Może to być zarówno twoje lokalne środowisko wirtualne, którego używasz do rozwoju, jak i usługa, na której go hostujesz. Użytecznym pakietem, który upraszcza ten proces, jest Python Decouple, oto jak można go użyć.
Najpierw zainstaluj Python Decouple w swoim lokalnym środowisku Pythona.
$ pip install python-decouple
Po zainstalowaniu utwórz plik .env
w korzeniu projektu, który możesz następnie otworzyć, aby dodać swoje zmienne środowiskowe.
$ touch .env # create a new .env file$ nano .env # open the .env file in the nano text editor
Możesz wtedy dodać swoje zmienne środowiskowe w następujący sposób:
USER=alexKEY=hfy92kadHgkk29fahjsu3j922v9sjwaucahf
Następnie zapisz (WriteOut) plik i zamknij nano. Twoje zmienne środowiskowe są teraz przechowywane w twoim pliku .env
. Jeśli używasz git, pamiętaj, aby dodać .env
do swojego pliku .gitignore
, aby nie popełnić tego pliku sekretów do swojego repozytorium kodu.
Teraz, gdy masz swoje zmienne środowiskowe przechowywane w pliku .env
, możesz uzyskać do nich dostęp w swoim kodzie Pythona w następujący sposób:
from decouple import configAPI_USERNAME = config('USER')API_KEY = config('KEY')
Zaletą korzystania z czegoś takiego jak powyższe podejście jest to, że kiedy wdrażasz swoją aplikację do usługi w chmurze, możesz ustawić swoje zmienne środowiskowe za pomocą dowolnej metody lub interfejsu dostawcy, a twój kod Pythona powinien nadal być w stanie uzyskać do nich dostęp. Zauważ, że powszechną konwencją jest używanie wielkich liter dla nazw stałych globalnych w twoim kodzie.
Większość dostawców usług w chmurze będzie miała CLI lub interfejs WWW, który pozwala skonfigurować zmienne środowiskowe dla środowisk inscenizacji lub produkcji. Aby uzyskać wskazówki w tych przypadkach, należy zapoznać się z ich dokumentacją dotyczącą sposobu ustawiania zmiennych środowiskowych podczas korzystania z ich usług.
Dołącz do Able Developer Network
Jeśli podobał Ci się ten post, możesz być zainteresowany siecią deweloperów Able, nowym miejscem dla deweloperów do blogowania i znajdowania pracy.