For at indstille og hente miljøvariabler i Python kan du blot bruge os
-modulet:
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.
Bemærk, at hvis du bruger getenv()
eller get()
-metoden på en ordbogsnøgle, returneres None
, hvis nøglen ikke findes. I eksemplet med BAZ
vil det imidlertid give en KeyError
, hvis du refererer til en nøgle i en ordbog, der ikke findes.
Miljøvariabler er nyttige, når du vil undgå hårdkodning af adgangsoplysninger eller andre variabler i kode. Det kan f.eks. være nødvendigt at indtaste API-oplysninger for en e-mail-udbyder for at kunne sende e-mail-meddelelser, men du ønsker ikke, at disse oplysninger skal gemmes i dit kodelager. Eller måske har du brug for, at din kode skal fungere lidt forskelligt mellem dine udviklings-, staging- og produktionsmiljøer. I dette tilfælde kan du indsætte en miljøvariabel for at fortælle dit program, hvilket miljø det kører i. Dette er typiske anvendelsestilfælde for miljøvariabler.
Lagring af lokale env-variabler
Du bør skrive din Python-kode, så den kan få adgang til miljøvariabler fra det miljø, den kører i. Dette kan enten være dit lokale virtuelle miljø, som du bruger til udvikling, eller en tjeneste, som du hoster den på. En nyttig pakke, der forenkler denne proces, er Python Decouple, sådan bruger du den:
Først skal du installere Python Decouple i dit lokale Python-miljø.
$ pip install python-decouple
Når det er installeret, opretter du en .env
fil i roden af dit projekt, som du derefter kan åbne for at tilføje dine miljøvariabler.
$ touch .env # create a new .env file$ nano .env # open the .env file in the nano text editor
Du kan derefter tilføje dine miljøvariabler på denne måde:
USER=alexKEY=hfy92kadHgkk29fahjsu3j922v9sjwaucahf
Så gemmer du (WriteOut) filen og afslutter nano. Dine miljøvariabler er nu gemt i din .env
-fil. Hvis du bruger git, skal du huske at tilføje .env
til din .gitignore
-fil, så du ikke committer denne fil med hemmeligheder til dit kodeopbevaringssted.
Nu, hvor du har dine miljøvariabler gemt i en .env
-fil, kan du få adgang til dem i din Python-kode på denne måde:
from decouple import configAPI_USERNAME = config('USER')API_KEY = config('KEY')
Fordelen ved at bruge noget som ovenstående fremgangsmåde er, at når du udruller din applikation til en cloud-tjeneste, kan du indstille dine miljøvariabler ved hjælp af den metode eller grænseflade, som udbyderen har, og din Python-kode bør stadig kunne få adgang til dem. Bemærk, at det er almindelig konvention at bruge store bogstaver til navne på globale konstanter i din kode.
De fleste udbydere af cloud-tjenester vil have en CLI- eller webgrænseflade, som giver dig mulighed for at konfigurere miljøvariablerne for dine staging- eller produktionsmiljøer. For vejledning i disse tilfælde skal du henvise til deres dokumentation om, hvordan du indstiller miljøvariabler, når du bruger deres tjeneste.
Join the Able Developer Network
Hvis du kunne lide dette indlæg, er du måske interesseret i Able developer network, et nyt sted for udviklere til at blogge og finde job.