.env
并可以将它们设置为环境变量。它有助于遵循以下条件的应用程序开发12-factor原则
- Getting Started
- Other Use Cases
- Command-line Interface
- File format
- Related Projects
- Acknowledgements
快速入门
pip install python-dotenv
如果您的应用程序从环境变量(如12因素应用程序)获取其配置,则在开发中启动它并不是很实际,因为您必须自己设置这些环境变量
为了帮助您做到这一点,您可以将python-dotenv添加到您的应用程序中,使其从.env
文件存在时(例如,在开发中),同时保持可通过环境进行配置:
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.
默认情况下,load_dotenv
不覆盖现有环境变量
若要配置开发环境,请添加.env
在项目的根目录中:
.
├── .env
└── foo.py
的语法.env
python-dotenv支持的文件与Bash相似:
# Development settings
DOMAIN=example.org
ADMIN_EMAIL=admin@${DOMAIN}
ROOT_URL=${DOMAIN}/app
如果在值中使用变量,请确保用{
和}
,就像${DOMAIN}
,作为赤裸裸的变量,如$DOMAIN
不会展开
您可能想要添加.env
致您的.gitignore
,特别是如果它包含密码之类的秘密
请参见下面的“文件格式”一节,了解有关可以在.env
文件
其他使用情形
在不更改环境的情况下加载配置
该函数dotenv_values
其工作方式与load_dotenv
,除非它不接触环境,它只是返回一个dict
使用从.env
文件
from dotenv import dotenv_values
config = dotenv_values(".env") # config = {"USER": "foo", "EMAIL": "foo@example.org"}
这显著实现了高级配置管理:
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
}
将配置解析为流
load_dotenv
和dotenv_values
接受streams通过他们的stream
论点。因此,可以从文件系统以外的源(例如,网络)加载变量
from io import StringIO
from dotenv import load_dotenv
config = StringIO("USER=foo\nEMAIL=foo@example.org")
load_dotenv(stream=config)
在IPython中加载.env文件
您可以在IPython中使用dotenv。默认情况下,它将使用find_dotenv
要搜索某个对象,请执行以下操作.env
文件:
%load_ext dotenv
%dotenv
您还可以指定路径:
%dotenv relative/or/absolute/path/to/.env
可选标志:
-
-o
要覆盖现有变量,请执行以下操作 -
-v
以提高冗长程度
命令行界面
CLI界面dotenv
也包括在内,它可以帮助您操作.env
文件,而无需手动打开它
$ pip install "python-dotenv[cli]"
$ dotenv set USER foo
$ dotenv set EMAIL foo@example.org
$ dotenv list
USER=foo
EMAIL=foo@example.org
$ dotenv run -- python foo.py
跑dotenv --help
有关选项和子命令的详细信息
文件格式
该格式没有正式指定,并且随着时间的推移仍在改进。话虽如此,.env
文件应该主要看起来像Bash文件
键可以是无引号的,也可以是单引号的。值可以是无引号的、单引号的或双引号的。键前后的空格、等号和值将被忽略。值后面可以跟注释。行可以以export
指令,该指令对它们的解释没有影响
允许的转义序列:
- 在单引号的值中:
\\
,\'
- 在双引号的值中:
\\
,\'
,\"
,\a
,\b
,\f
,\n
,\r
,\t
,\v
多行值
单引号或双引号的值可以跨多行。以下示例等效:
FOO="first line
second line"
FOO="first line\nsecond line"
变量展开
Python-dotenv可以使用POSIX变量展开来插值变量
使用load_dotenv(override=True)
或dotenv_values()
变量的值是下表中定义的第一个值:
- 中该变量的值。
.env
文件 - 环境中该变量的值
- 默认值(如果提供)
- 空字符串
使用load_dotenv(override=False)
变量的值是下表中定义的第一个值:
- 环境中该变量的值
- 中该变量的值。
.env
文件 - 默认值(如果提供)
- 空字符串
相关项目
- Honcho-用于管理基于Procfile的应用程序
- django-dotenv
- django-environ
- django-environ-2
- django-configuration
- dump-env
- environs
- dynaconf
确认
此项目当前由Saurabh Kumar和Bertrand Bonnefoy-Claudet如果没有这些人的支持是不可能的awesome
people