未提供项目描述
项目描述
speckenv 因为斑点是点的同义词,而且斑点很棒。
用法
基本的
将./.env中包含的设置读入os.environ:
from speckenv import read_speckenv
read_speckenv()
请注意,read_speckenv使用os.environ.setdefault设置新值,这意味着如果特定键在文件中多次存在,则保留第一个值,而不是最后一个。
如果文件名称不同或位于不同的路径中,请将完整路径作为第一个参数传递给read_speckenv。
读取单个值:
from speckenv import env
# Standard usage:
SETTING1 = env("SETTING1")
# Fallback if SETTING2 does not exist:
SETTING2 = env("SETTING2", default="bla")
# Fail hard if missing:
SETTING3 = env("SETTING3", required=True)
# Coerce the value before returning it (coercion is also applied to
# default values):
SETTING4 = env(
"SETTING4",
coerce=lambda value: date(*(int(part) for part in value.split("-"))),
default="1970-01-01",
)
以下值被评估为 Python 文字,因此强制值的用处可能比您想象的要少:
BOOL=True # And False, None etc. NUMBER=42 SWEET_HOME=["localhost", "127.0.0.1"]
支持等号周围的附加空格。空行和以#开头的行将被忽略:
THIS_IS_IGNORED # COMMENTED_OUT=VALUE THIS = WORKS
不过,您不应该在行中使用注释。他们有时会意外工作,但这是一个坏主意。
如果一个值看起来像 Python 类型,但您想将其作为字符串加载,则必须使用强制转换,例如
NUMBER_AS_STRING = env("NUMBER", coerce=str)
# Alternatively, read the value directly from os.environ:
NUMBER_AS_STRING = os.environ["NUMBER"]
自定义映射而不是os.environ
使用与os.environ分开的映射可能很有用。这很容易通过覆盖默认映射参数来实现:
from speckenv import env, read_speckenv
mapping = {}
read_speckenv("file_with_variables.env", mapping=mapping)
setting1 = env("SETTING1", mapping=mapping)
Django 支持
speckenv 附带了一些使用环境变量配置 Django 的实用程序。这些都是纯函数,没有任何副作用,也不依赖于它们的环境。它们仅与speckenv捆绑在一起, 因为它们很有用并且这样做很方便。
许多其他项目已经这样做了,但speckenv_django的不同之处在于它只涵盖了有趣的设置。此外,该实现不会向urllib.parse添加猴子补丁。
speckenv 不依赖于 Django,如果您不想使用 Django 或 speckenv_django模块,除了硬盘上的几个 KiB 之外,您无需支付任何费用。
django_cache_url
涵盖使用可选身份验证凭据配置 Redis、locmem 或虚拟缓存后端。Redis 配置仅支持 Django 4 或更高版本。redis://和hiredis://是等价的,因为最新版本的redis-py 会自动选择hiredis 解析器(如果可用)。
from speckenv import env
from speckenv_django import django_cache_url
# CACHE_URL=hiredis://localhost:6379/1/?key_prefix=example_com"
CACHES = {"default": django_cache_url(env("CACHE_URL", default="locmem://"))}
# NOTE! locmem:// may be a bad default, but that's up to you really.
django_database_url
涵盖使用身份验证凭据配置 PostgreSQL、PostGIS 或 sqlite 数据库引擎。
from speckenv import env
from speckenv_django import django_database_url
# DATABASE_URL=postgres://localhost:5432/example_com
DATABASES = {"default": django_database_url(env("DATABASE_URL", required=True))}
django_email_url
涵盖配置电子邮件后端。已知的后端是smtp://、 submit:// (与smtp://相同,但使用 TLS 和默认端口 587)、 locmem://、console://和dummy:。
该实用程序还支持显式请求 SSL ( ?ssl=true )、TLS ( ?tls=true )、SMTP 超时 ( ?timeout=10 ) 和设置 DEFAULT_FROM_EMAIL地址 ( ?_default_from_email=info@example.com )
from speckenv import env
from speckenv_django import django_email_url
# DATABASE_URL=smtp://
if DEBUG:
globals().update(django_email_url(env("EMAIL_URL", default="console://")))
else:
globals().update(django_email_url(env("EMAIL_URL", default="smtp://")))
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。