Para establecer y obtener variables de entorno en Python sólo tienes que utilizar el módulo 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.
Nota que si utilizas getenv()
o el método get()
en una clave de diccionario devolverá None
si la clave no existe. Sin embargo, en el ejemplo con BAZ
, si se hace referencia a una clave en un diccionario que no existe, se producirá un KeyError
.
Las variables de entorno son útiles cuando se quiere evitar la codificación de credenciales de acceso u otras variables en el código. Por ejemplo, puede que necesites pasar las credenciales de la API para un proveedor de servicios de correo electrónico con el fin de enviar notificaciones por correo electrónico, pero no querrás que estas credenciales se almacenen en tu repositorio de código. O tal vez necesites que tu código funcione de forma ligeramente diferente entre tus entornos de desarrollo, preparación y producción. En este caso podrías pasar una variable de entorno para indicar a tu aplicación en qué entorno se está ejecutando. Estos son los casos típicos de uso de las variables de entorno.
Almacenamiento de variables de entorno locales
Deberías escribir tu código Python de forma que sea capaz de acceder a las variables de entorno desde cualquier entorno en el que se esté ejecutando. Esto podría ser su entorno virtual local que está utilizando para el desarrollo o un servicio que está alojando en. Un paquete útil que simplifica este proceso es Python Decouple, así es como lo usarías.
Primero instala Python Decouple en tu entorno local de Python.
$ pip install python-decouple
Una vez instalado, crea un archivo .env
en la raíz de tu proyecto que luego puedes abrir para añadir tus variables de entorno.
$ touch .env # create a new .env file$ nano .env # open the .env file in the nano text editor
Entonces puedes añadir tus variables de entorno así:
USER=alexKEY=hfy92kadHgkk29fahjsu3j922v9sjwaucahf
Después guarda (WriteOut) el archivo y sal de nano. Tus variables de entorno están ahora almacenadas en tu archivo .env
. Si estás usando git, recuerda añadir .env
a tu archivo .gitignore
para que no confirmes este archivo de secretos en tu repositorio de código.
Ahora que tienes tus variables de entorno almacenadas en un archivo .env
, puedes acceder a ellas en tu código Python de la siguiente manera:
from decouple import configAPI_USERNAME = config('USER')API_KEY = config('KEY')
El beneficio de usar algo como el enfoque anterior es que cuando despliegas tu aplicación a un servicio en la nube, puedes establecer tus variables de entorno usando cualquier método o interfaz que tenga el proveedor y tu código Python debería seguir siendo capaz de acceder a ellas. Tenga en cuenta que es una convención común para utilizar las letras mayúsculas para los nombres de las constantes globales en su código.
La mayoría de los proveedores de servicios en la nube tendrá una interfaz CLI o web que le permite configurar las variables de entorno para su puesta en escena o entornos de producción. Para obtener orientación en estos casos, tendrás que consultar su documentación sobre cómo configurar las variables de entorno cuando se utiliza su servicio.
Únete a la red de desarrolladores Able
Si te ha gustado este post, puede que te interese la red de desarrolladores Able, un nuevo lugar para que los desarrolladores escriban en sus blogs y encuentren trabajo.