프로그래밍/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 파일을 꼭 프로젝트에 도입해보세요!