Chapter 8-4 환경변수 관리와 python-dotenv 사용법

2025. 5. 12. 20:16·Django
목차
  1. 📌 환경변수 관리와 python-dotenv 사용법
  2. 1️⃣ 환경변수란?
  3. 2️⃣ python-dotenv 사용법
  4. 3️⃣ config_secret 방식 (JSON 기반)
  5. ✅ 정리

📌 환경변수 관리와 python-dotenv 사용법


개발 환경에서 **민감한 정보(API 키, DB 비밀번호 등)**를 안전하게 보호하고, 환경마다 설정을 분리하여 관리하기 위한 핵심 기법이 바로 "환경변수 관리"입니다. 이 글에서는 python-dotenv와 config_secret 방식 두 가지를 중심으로 설명합니다.


1️⃣ 환경변수란?

✔️ 환경변수는 코드와 분리된 외부 설정값입니다.

  • 코드 수정 없이도 환경별 설정 변경 가능
  • 팀원 간 협업 시, 공통 코드에 개인 설정 적용 가능
  • 민감한 정보 보호 (GitHub에 노출 X)

💡 Tip: .env, secret.json은 .gitignore에 등록하여 GitHub에 푸시되지 않도록 관리하세요.

2️⃣ python-dotenv 사용법

python-dotenv는 .env 파일을 자동으로 읽어 환경변수로 등록해주는 Python 라이브러리입니다.

🔧 설치

pip install python-dotenv

📄 .env 파일 예시 (프로젝트 루트에 위치)

DATABASE_URL=postgres://user:password@localhost:5432/mydatabase
SECRET_KEY=mysecretkey

🧪 파이썬 코드에서 활용

with open(BASE_DIR / '.config_secret' / 'secret.json') as f:
    config_secret_str = f.read()

SECRET = json.loads(config_secret_str)

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = SECRET['DJANGO_SECRET_KEY']

 

# secret.json에 SECRET KEY 저장

{
  "DJANGO_SECRET_KEY": "django-insecure-@cggy0b3%9ie&7g_1315nnh+4la@0xx3q!%vxuda24bs0x1a%b0y$"
}

✔️ 장점 요약

  • 보안성 강화: 코드에 민감 정보 미노출
  • 환경별 설정 가능: 개발/운영 환경 분리
  • 재사용성: 공통 코드 유지

3️⃣ config_secret 방식 (JSON 기반)

.env 방식 외에 JSON 파일로 설정값을 분리하는 config_secret 방식도 있습니다. 이 방식은 환경별 json 파일을 구분하여 보다 구조적인 설정이 가능합니다.

🔧 사용 예시

import os
import json

# 현재 환경값 (기본값: development)
current_env = os.getenv('ENV', 'development')

# 경로 지정
secret_file = os.path.join('config_secret', f'{current_env}.json')

# JSON 파일 로딩
with open(secret_file) as f:
    secrets = json.load(f)

# 환경 변수처럼 사용
DEBUG = secrets['DEBUG']
DATABASE_URL = secrets['DATABASE_URL']
SECRET_KEY = secrets['SECRET_KEY']

print(f"DEBUG: {DEBUG}")

✔️ 장점 요약

  • JSON 구조라서 다중 설정 관리에 유리
  • 환경별 파일 분리로 테스트/운영 전환이 쉬움
  • 복수 DB나 다양한 설정에 유용

✅ 정리

항목 python-dotenv config_secret(JSON)

형식 .env (key=value) .json (딕셔너리 구조)
로딩 방식 load_dotenv() json.load()
Git에 노출? .gitignore 등록 필요 .gitignore 등록 필요
복잡한 설정 ❌ (단순 키-값) ✅ (복수 계층 구조 지원)
추천 상황 간단한 설정 환경별 설정이 많은 경우

🔐 보안과 유지보수를 고려한 환경변수 관리는 필수입니다. 위의 두 가지 방법을 적절히 활용해 프로젝트의 안정성과 협업 효율을 높이세요!

'Django' 카테고리의 다른 글

Chapter 8-6 Mini Project: Django Login & Logout 기능 만들기  (0) 2025.05.12
Chapter 8-5 Django 이메일 인증을 위한 SMTP 설정 가이드  (0) 2025.05.12
Chapter 8-3 Django 회원가입 페이지 만들기 (정적 파일 + 폼 커스텀 + 뷰 구현)  (0) 2025.05.12
Chapter 8-2 Django에서 커스텀 유저 모델 만들기 (AbstractBaseUser 활용)  (0) 2025.05.12
Chapter 8-1 [인스타그램] 회원가입 및 로그인 기능 만들기  (0) 2025.05.12
  1. 📌 환경변수 관리와 python-dotenv 사용법
  2. 1️⃣ 환경변수란?
  3. 2️⃣ python-dotenv 사용법
  4. 3️⃣ config_secret 방식 (JSON 기반)
  5. ✅ 정리
'Django' 카테고리의 다른 글
  • Chapter 8-6 Mini Project: Django Login & Logout 기능 만들기
  • Chapter 8-5 Django 이메일 인증을 위한 SMTP 설정 가이드
  • Chapter 8-3 Django 회원가입 페이지 만들기 (정적 파일 + 폼 커스텀 + 뷰 구현)
  • Chapter 8-2 Django에서 커스텀 유저 모델 만들기 (AbstractBaseUser 활용)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (777)
      • Python (32)
      • 프로젝트 (101)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    hotcoffeecase
    livebroadcast
    chinanightlife
    basalcellcarcinoma
    trumpmuskclash
    btscomeback
    뷔
    americanlaw
    youngprofessionals
    global politics
    self-growth
    btsreunion
    americaparty
    gpterror
    travel ban
    lawsuitculture
    life reflection
    newpoliticalparty
    btsdischarge
    btsjungkook
    bts
    remittance
    titaniumcase
    RM
    homebartrend
    smartphonedurability
    urbantrends
    classaction
    college reunions
    chatgpterror
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 8-4 환경변수 관리와 python-dotenv 사용법

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.