728x90
python-dotenv
라이브러리의 load_dotenv()
함수는 기본적으로 현재 작업 디렉토리(current working directory)와 그 상위 디렉토리들을 탐색하여 .env
파일을 찾습니다.
load_dotenv()
의 기본 동작
load_dotenv()
함수를 인자 없이 호출하면, 다음과 같은 순서로 .env
파일을 탐색합니다:
- 현재 스크립트가 실행되는 디렉토리(Current Working Directory, CWD): 예를 들어,
/home/user/project/src
에서python my_script.py
를 실행했다면,/home/user/project/src/.env
를 먼저 찾습니다. - 현재 작업 디렉토리의 상위 디렉토리들: CWD에서
.env
파일을 찾지 못하면, 그 부모 디렉토리, 그 부모의 부모 디렉토리... 이런 식으로 파일 시스템의 루트까지 거슬러 올라가며.env
파일을 찾습니다. - 처음으로 찾은
.env
파일을 로드합니다.
이러한 동작 덕분에 프로젝트의 루트 디렉토리에 .env
파일을 두는 것이 일반적인 관행이 됩니다. 예를 들어, 프로젝트 구조가 다음과 같을 때:
my_project/
├── .env # 여기에 .env 파일이 있음
├── app/
│ ├── __init__.py
│ └── main.py
├── scripts/
│ └── run_script.py
└── requirements.txt
my_project/app/main.py
파일 내에서load_dotenv()
를 호출하더라도,my_project/.env
파일을 찾아서 로드합니다.my_project/scripts/run_script.py
에서load_dotenv()
를 호출해도 마찬가지입니다.
특정 .env
파일 경로 지정하기
만약 기본 탐색 경로가 아닌 특정 위치의 .env
파일을 로드하고 싶다면, load_dotenv()
함수에 파일 경로를 명시적으로 전달할 수 있습니다.
from dotenv import load_dotenv
import os
# 특정 경로의 .env 파일 로드
# 예시: './config/.env.production' 파일을 로드
load_dotenv(dotenv_path='./config/.env.production')
# 환경 변수 사용
api_key = os.getenv("MY_API_KEY")
print(f"API Key: {api_key}")
이 기능은 여러 환경별 .env
파일(예: .env.local
, .env.development
, .env.production
)을 관리할 때 유용하게 사용됩니다. 이 경우, APP_ENV
와 같은 환경 변수를 사용하여 어떤 .env
파일을 로드할지 동적으로 결정할 수 있습니다.
요약
python-dotenv
는 편의를 위해 현재 작업 디렉토리부터 상위 디렉토리로 .env
파일을 탐색하지만, 필요한 경우 명시적인 경로를 지정하여 특정 .env
파일을 로드할 수도 있습니다. 프로젝트의 루트 디렉토리에 .env
파일을 두는 것이 가장 일반적이고 권장되는 방식입니다.
728x90
'파이썬(Python)' 카테고리의 다른 글
자주 사용하는 함수 목록 (0) | 2023.11.09 |
---|---|
특정 버전과 플랫폼에 맞는 python 모듈 다운로드 (0) | 2023.11.03 |
파이썬 코드 디버깅 (0) | 2023.10.29 |
파이썬에서 f-string에서 줄바꿈 시 앞 공백 제거 방법 (0) | 2022.11.07 |
jupyter notebook에서 install시 자동으로 "y" 입력하기 (0) | 2022.02.11 |