A környezeti változók beállításához és lekérdezéséhez Pythonban egyszerűen használhatjuk a os
modult:
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.
Megjegyezzük, hogy a getenv()
vagy a get()
módszer használata egy szótári kulcson None
ad vissza, ha a kulcs nem létezik. A BAZ
példában azonban, ha olyan kulcsra hivatkozunk egy szótárban, amely nem létezik, az KeyError
-t fog kiírni.
A környezeti változók hasznosak, ha el akarjuk kerülni a hozzáférési hitelesítő adatok vagy más változók kemény kódolását a kódba. Például előfordulhat, hogy az e-mail értesítések küldéséhez át kell adnia egy e-mail szolgáltató API hitelesítő adatait, de nem szeretné, ha ezek a hitelesítő adatok a kódtárolóban tárolódnának. Vagy talán arra van szüksége, hogy a kódja kissé eltérően működjön a fejlesztési, a staging és a termelési környezetek között. Ebben az esetben átadhat egy környezeti változót, amely megmondja az alkalmazásnak, hogy milyen környezetben fut. Ezek a környezeti változók tipikus felhasználási esetei.
Lokális env-változók tárolása
A Python kódot úgy kell megírnia, hogy az képes legyen elérni a környezeti változókat bármilyen környezetből, amelyben fut. Ez lehet akár a helyi virtuális környezeted, amelyet fejlesztésre használsz, akár egy olyan szolgáltatás, amelyen hosztolod. Egy hasznos csomag, amely leegyszerűsíti ezt a folyamatot, a Python Decouple, ezt így használhatod.
Először telepítsd a Python Decouple-t a helyi Python környezetedbe.
$ pip install python-decouple
A telepítés után hozzon létre egy .env
fájlt a projekt gyökerében, amit aztán megnyithat a környezeti változók hozzáadásához.
$ touch .env # create a new .env file$ nano .env # open the .env file in the nano text editor
Ezután a következőképpen adhatja hozzá a környezeti változókat:
USER=alexKEY=hfy92kadHgkk29fahjsu3j922v9sjwaucahf
Ezután mentse (WriteOut) a fájlt és lépjen ki a nano-ból. A környezeti változók most már a .env
fájlban vannak tárolva. Ha git-et használsz, ne felejtsd el hozzáadni a .env
-ot a .gitignore
fájlodhoz, hogy ezt a titkokat tartalmazó fájlt ne küldd át a kódtáradba.
Most, hogy a környezeti változókat egy .env
fájlban tároltad, a Python kódodban így érheted el őket:
from decouple import configAPI_USERNAME = config('USER')API_KEY = config('KEY')
A fenti megközelítéshez hasonló megközelítés használatának előnye, hogy amikor az alkalmazásodat egy felhőszolgáltatásba telepíted, a környezeti változókat bármilyen módszerrel vagy interfésszel beállíthatod a szolgáltatónál, és a Python kódodnak továbbra is képesnek kell lennie elérni azokat. Vegye figyelembe, hogy általános szokás a globális konstansok nevének nagybetűs írása a kódban.
A legtöbb felhőszolgáltató rendelkezik CLI-vel vagy webes felülettel, amellyel beállíthatja a környezeti változókat a staging vagy a termelési környezethez. Ezekben az esetekben a dokumentációjukban talál útmutatást a környezeti változók beállításához a szolgáltatásuk használatakor.
Join the Able Developer Network
Ha tetszett ez a bejegyzés, akkor talán érdekelheti az Able fejlesztői hálózat, egy új hely a fejlesztők számára, ahol blogolhatnak és munkát találhatnak.