python-dotenv - KolMitE

python-dotenv

python-dotenv

noviembre 28, 2022 Software en General 0

python-dotenv

Estado de construcción
Versión PyPI

Python-dotenv lee pares clave-valor de un .env archivo y puede configurarlos como variables de entorno. Ayuda en el desarrollo de aplicaciones siguiendo los principios de los 12 factores.

  • Empezando
  • Otros casos de uso
    • Cargar configuración sin alterar el entorno
    • Analizar la configuración como una secuencia
    • Cargar archivos .env en IPython
  • Interfaz de línea de comandos
  • Formato de archivo
    • Valores multilínea
    • expansión variable
  • Proyectos relacionados
  • Agradecimientos

Empezando

pip install python-dotenv

Si su aplicación toma su configuración a partir de variables de entorno, como una aplicación de 12 factores, lanzarla en desarrollo no es muy práctico porque debe configurar esas variables de entorno usted mismo.

Para ayudarlo con eso, puede agregar Python-dotenv a su aplicación para que cargue la configuración desde un .env archivo cuando está presente (por ejemplo, en desarrollo) sin dejar de ser configurable a través del entorno:

from dotenv import load_dotenv

load_dotenv()  # take environment variables from .env.

# Code of your application, which uses environment variables (e.g. from `os.environ` or
# `os.getenv`) as if they came from the actual environment.

Por defecto, load_dotenv no anula las variables de entorno existentes.

Para configurar el entorno de desarrollo, agregue un .env en el directorio raíz de su proyecto:

.
├── .env
└── foo.py

la sintaxis de .env Los archivos admitidos por python-dotenv son similares a los de Bash:

# Development settings
DOMAIN=example.org
[email protected]${DOMAIN}
ROOT_URL=${DOMAIN}/app

Si usa variables en valores, asegúrese de que estén rodeadas de { y }me gusta
${DOMAIN}como variables desnudas tales como $DOMAIN no se expanden.

Probablemente querrá agregar .env para usted .gitignoreespecialmente si contiene secretos como una contraseña.

Consulte la sección “Formato de archivo” a continuación para obtener más información sobre lo que puede escribir en un
.env expediente.

Otros casos de uso

Cargar configuración sin alterar el entorno

La función dotenv_values funciona más o menos de la misma manera que load_dotenvexcepto que no toca el entorno, solo devuelve un dict con los valores analizados de la
.env expediente.

from dotenv import dotenv_values

config = dotenv_values(".env")  # config = {"USER": "foo", "EMAIL": "[email protected]"}

Esto permite, en particular, una gestión avanzada de la configuración:

import os
from dotenv import dotenv_values

config = {
    **dotenv_values(".env.shared"),  # load shared development variables
    **dotenv_values(".env.secret"),  # load sensitive variables
    **os.environ,  # override loaded values with environment variables
}

Analizar la configuración como una secuencia

load_dotenv y dotenv_values aceptar flujos a través de su stream
argumento. Por lo tanto, es posible cargar las variables desde fuentes distintas al sistema de archivos (por ejemplo, la red).

from io import StringIO

from dotenv import load_dotenv

config = StringIO("USER=foon[email protected]")
load_dotenv(stream=config)

Cargar archivos .env en IPython

Puede usar dotenv en IPython. De forma predeterminada, utilizará find_dotenv para buscar un
.env expediente:

%load_ext dotenv
%dotenv

También puede especificar una ruta:

%dotenv relative/or/absolute/path/to/.env

Banderas opcionales:

  • -o para anular las variables existentes.
  • -v para aumentar la verbosidad.

Interfaz de línea de comandos

Una interfaz CLI dotenv también se incluye, lo que le ayuda a manipular el .env archivo sin abrirlo manualmente.

$ pip install "python-dotenv[cli]"
$ dotenv set USER foo
$ dotenv set EMAIL [email protected]
$ dotenv list
USER=foo
[email protected]
$ dotenv list --format=json
{
  "USER": "foo",
  "EMAIL": "[email protected]"
}
$ dotenv run -- python foo.py

Correr dotenv --help para obtener más información sobre las opciones y los subcomandos.

Formato de archivo

El formato no se especifica formalmente y aún mejora con el tiempo. Habiendo dicho eso,
.env la mayoría de los archivos deberían verse como archivos Bash.

Las claves pueden estar entre comillas simples o sin comillas. Los valores pueden estar sin comillas, con comillas simples o dobles. Se ignoran los espacios antes y después de las teclas, los signos de igual y los valores. Los valores pueden ir seguidos de un comentario. Las líneas pueden comenzar con el export Directiva, lo que no afecta a su interpretación.

Secuencias de escape permitidas:

  • en valores entre comillas simples: \, '
  • en valores entre comillas dobles: \, ', ", a, b, f, n, r, t, v

Valores multilínea

Es posible que los valores entre comillas simples o dobles abarquen varias líneas. Los siguientes ejemplos son equivalentes:

FOO="first line
second line"
FOO="first linensecond line"

variable sin valor

Una variable no puede tener valor:

FOO

En resultado de dotenv_values asociando ese nombre de variable con el valor None (p.ej
{"FOO": None}. load_dotenvpor otro lado, simplemente ignora tales variables.

Esto no debe confundirse con FOO=en cuyo caso la variable se asocia con la cadena vacía.

expansión variable

Python-dotenv puede interpolar variables mediante la expansión de variables POSIX.

Con load_dotenv(override=True) o dotenv_values()el valor de una variable es el primero de los valores definidos en la siguiente lista:

  • Valor de esa variable en el .env expediente.
  • Valor de esa variable en el entorno.
  • Valor predeterminado, si se proporciona.
  • Cuerda vacía.

Con load_dotenv(override=False)el valor de una variable es el primero de los valores definidos en la siguiente lista:

  • Valor de esa variable en el entorno.
  • Valor de esa variable en el .env expediente.
  • Valor predeterminado, si se proporciona.
  • Cuerda vacía.

Proyectos relacionados

  • Honcho: para administrar aplicaciones basadas en Procfile.
  • django-dotenv
  • Django-entorno
  • Django-entorno-2
  • Django-configuración
  • dump-env
  • alrededores
  • dinaconf
  • parse_it

Agradecimientos

Este proyecto actualmente lo mantienen Saurabh Kumar y Bertrand Bonnefoy-Claudet y no hubiera sido posible sin el apoyo de estas increíbles personas.

Por favor Comparte y Síguenos:
RSS
Follow by Email
Facebook
Twitter

Deja una respuesta