프로그래밍/Python
python-dotenv 사용법 정리 — 안전하고 유연한 환경 변수 관리법
jaewoo93
2025. 4. 10. 14:26
Python 프로젝트를 하다 보면 API 키나 DB 접속 정보 같은 민감한 정보를 다루게 되는 순간이 있습니다.
이런 정보를 코드에 하드코딩하면 보안상 큰 문제가 될 수 있고, 개발·테스트·운영 환경마다 설정을 바꿔야 할 때도 번거롭죠.
이럴 때 사용하는 라이브러리가 바로 python-dotenv입니다.
오늘은 python-dotenv의 개념부터 설치, 사용 방법까지 상세하게 정리해 드릴게요.
✅ python-dotenv란?
python-dotenv는 .env 파일에 저장된 환경 변수(Environment Variable)를 Python 코드에서 쉽게 불러올 수 있게 도와주는 도구입니다.
Flask, Django, FastAPI 등 웹 프레임워크에서도 자주 사용되는 필수 라이브러리 중 하나입니다.
✅ 왜 써야 할까?
환경 변수를 사용하는 이유는 단순합니다.
- 🔒 보안 강화: 코드에 직접 민감한 정보를 쓰지 않아도 됩니다. .env 파일은 .gitignore에 등록하여 소스 코드에 포함되지 않도록 관리합니다.
- 🔁 환경별 설정 분리: 로컬, 개발, 운영 환경에서 각각 다른 .env 파일을 적용하여 유연하게 설정할 수 있습니다.
- 🧼 코드 정리: 하드코딩된 설정값보다 훨씬 더 깔끔하고 유지보수가 용이합니다.
✅ 어디에 쓰일까?
python-dotenv는 다음과 같은 곳에서 매우 유용하게 활용됩니다:
- 🔑 API 키, 비밀번호, 인증 토큰 등 보안 정보 관리
- 🌐 Flask, Django 같은 웹 프레임워크의 환경 설정
- 🧬 FastAPI + Pydantic 설정 객체 구성 자동화
- 📦 Docker, CI/CD 환경에서 설정값 주입
✅ 설치 방법
설치는 간단합니다. pip로 한 줄이면 OK!
pip install python-dotenv
✅ 기본 사용법
1. 프로젝트 루트에 .env 파일 생성:
API_KEY=abcdef123456
DEBUG=True
PORT=8000
2. Python 코드에서 불러오기:
from dotenv import load_dotenv
import os
load_dotenv() # .env 파일 읽어오기
api_key = os.getenv("API_KEY")
debug_mode = os.getenv("DEBUG") == "True"
port = int(os.getenv("PORT"))
print(api_key, debug_mode, port)
✅ 고급 사용법
기본 .env 외에도 다양한 환경 파일을 지정할 수 있습니다.
from dotenv import load_dotenv
# .env.prod 파일을 따로 지정
load_dotenv(dotenv_path=".env.prod")
또는 딕셔너리처럼 값을 직접 가져올 수도 있습니다.
from dotenv import dotenv_values
config = dotenv_values(".env")
print(config["API_KEY"])
✅ 실전 팁
- .env.example 파일을 함께 제공해 협업 시 구조를 공유하세요.
- .gitignore에 .env 파일을 반드시 포함시키세요.
- Pydantic 기반의 설정 객체로 매핑하면 FastAPI 환경에서 매우 강력하게 활용할 수 있습니다.
- .env.local, .env.dev, .env.prod 등으로 나누어 환경별 구성도 가능!
✅ 요약
항목 | 설명 |
📦 라이브러리 | python-dotenv |
🔧 기능 | .env → os.getenv() 로 환경 변수 불러오기 |
🎯 목적 | 보안 정보 분리, 설정 유연화, 코드 간결화 |
🧩 사용 예 | API 키, DB 설정, 디버그 모드, 포트 번호 등 |
✅ 마무리
요즘처럼 API 기반 서비스와 클라우드 환경이 기본이 된 시대에는 설정값을 안전하고 유연하게 다루는 것이 필수입니다.
python-dotenv는 가볍고 효율적인 설정 관리 도구로, 보안과 개발 생산성 모두를 챙길 수 있는 좋은 선택입니다.
이 글이 도움이 되셨다면, .env 파일을 꼭 프로젝트에 도입해보세요!