Python-dotenv는 .env
파일에서 키-값 쌍을 읽고 이를 환경 변수로 설정할 수 있습니다. 이는 12가지 요소 원칙에 따라 애플리케이션을 개발하는 데 도움이 됩니다.
pip install python-dotenv
응용 프로그램이 12단계 응용 프로그램과 같은 환경 변수에서 구성을 가져오는 경우 해당 환경 변수를 직접 설정해야 하기 때문에 개발 중에 응용 프로그램을 시작하는 것은 그리 실용적이지 않습니다.
이를 돕기 위해 애플리케이션에 Python-dotenv를 추가하여 환경을 통해 구성 가능한 상태를 유지하면서 존재하는 경우(예: 개발 중) .env
파일에서 구성을 로드하도록 할 수 있습니다.
from dotenv import load_dotenv
load_dotenv () # take environment variables
# 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
기존 환경 변수를 재정의하지 않고 Python 스크립트와 동일한 디렉터리에서 .env
파일을 찾거나 점진적으로 더 높은 위치에서 검색합니다.
개발 환경을 구성하려면 프로젝트의 루트 디렉터리에 .env
를 추가하세요.
.
├── .env
└── foo.py
python-dotenv에서 지원하는 .env
파일의 구문은 Bash의 구문과 유사합니다.
# Development settings
DOMAIN=example.org
ADMIN_EMAIL=admin@ ${DOMAIN}
ROOT_URL= ${DOMAIN} /app
값에 변수를 사용하는 경우 ${DOMAIN}
과 같은 {
및 }
로 묶어야 합니다. $DOMAIN
과 같은 기본 변수는 확장되지 않기 때문입니다.
특히 비밀번호와 같은 비밀이 포함된 경우 .gitignore
에 .env
추가하고 싶을 것입니다.
.env
파일에 쓸 수 있는 내용에 대한 자세한 내용은 아래 "파일 형식" 섹션을 참조하세요.
dotenv_values
함수는 환경에 영향을 주지 않고 .env
파일에서 구문 분석된 값이 포함된 사전을 반환한다는 dict
제외하면 load_dotenv
와 거의 동일한 방식으로 작동합니다.
from dotenv import dotenv_values
config = dotenv_values ( ".env" ) # config = {"USER": "foo", "EMAIL": "[email protected]"}
이를 통해 특히 고급 구성 관리가 가능해졌습니다.
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
stream
인수를 통해 스트림을 허용합니다. 따라서 파일 시스템 이외의 소스(예: 네트워크)에서 변수를 로드하는 것이 가능합니다.
from io import StringIO
from dotenv import load_dotenv
config = StringIO ( "USER=foo n [email protected]" )
load_dotenv ( stream = config )
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 [email protected]
$ dotenv list
USER=foo
[email protected]
$ dotenv list --format=json
{
" USER " : " foo " ,
" EMAIL " : " [email protected] "
}
$ dotenv run -- python foo.py
옵션 및 하위 명령에 대한 자세한 내용을 보려면 dotenv --help
실행하세요.
형식은 공식적으로 지정되지 않았으며 시간이 지남에 따라 계속 개선됩니다. 즉, .env
파일은 대부분 Bash 파일과 유사해야 합니다.
키는 따옴표로 묶거나 작은 따옴표로 묶을 수 있습니다. 값은 따옴표가 없거나 작은 따옴표 또는 큰 따옴표로 묶일 수 있습니다. 키, 등호 및 값 앞뒤의 공백은 무시됩니다. 값 뒤에는 주석이 올 수 있습니다. 줄은 해석에 영향을 주지 않는 export
지시문으로 시작할 수 있습니다.
허용되는 이스케이프 시퀀스:
\
, '
\
, '
, "
, a
, b
, f
, n
, r
, t
, v
작은따옴표나 큰따옴표로 묶인 값이 여러 줄에 걸쳐 있을 수 있습니다. 다음 예는 동일합니다.
FOO= " first line
second line "
FOO= " first linensecond line "
변수에는 값이 있을 수 없습니다.
FOO
결과적으로 해당 변수 이름을 None
값과 연결하는 dotenv_values
생성됩니다(예: {"FOO": None}
. 반면에 load_dotenv
이러한 변수를 단순히 무시합니다.
이를 FOO=
와 혼동해서는 안 됩니다. 이 경우 변수는 빈 문자열과 연결됩니다.
Python-dotenv는 POSIX 변수 확장을 사용하여 변수를 보간할 수 있습니다.
load_dotenv(override=True)
또는 dotenv_values()
사용하면 변수 값은 다음 목록에 정의된 값 중 첫 번째 값입니다.
.env
파일에 있는 해당 변수의 값입니다. load_dotenv(override=False)
사용하면 변수 값은 다음 목록에 정의된 값 중 첫 번째 값입니다.
.env
파일에 있는 해당 변수의 값입니다.이 프로젝트는 현재 Saurabh Kumar와 Bertrand Bonnefoy-Claudet가 관리하고 있으며, 이 멋진 사람들의 지원이 없었다면 불가능했을 것입니다.