반응형
.env 파일 - 환경 변수로 설정 관리하기

1. .env란 무엇인가
.env는 Environment(환경)의 약자로, 파이썬 프로젝트에서 환경 변수를 관리하기 위한 설정 파일이다.
코드 안에 직접 비밀번호, API 키, 서버 주소 등을 적는 대신 .env 파일에 따로 저장해 두고, 프로그램이 실행될 때 불러오는 방식이다.
2. .env를 사용하는 이유
| 보안 | 민감한 정보를 코드에 직접 쓰지 않아도 된다. |
| 유연성 | 개발, 테스트, 운영 환경별로 설정을 쉽게 바꿀 수 있다. |
| 협업 편의 | .gitignore에 포함시켜 Git에 노출되지 않도록 할 수 있다. |
| 호환성 | Docker, FastAPI, Django 등 다양한 프레임워크에서 지원된다. |
3. .env 파일 작성법
.env 파일은 단순한 텍스트 파일로, 이름=값 형태로 작성한다.
# 데이터베이스 설정
DB_HOST=localhost
DB_PORT=5432
DB_USER=admin
DB_PASS=secret123
# API 설정
API_KEY=abcd1234
DEBUG=True
작성 규칙
- = 앞뒤에 공백을 넣지 않는다.
예: DB_USER=admin (O), DB_USER = admin (X) - #으로 시작하는 줄은 주석으로 처리된다.
- 문자열은 따옴표로 감싸도 되고, 생략해도 된다.
4. .env 파일 위치
일반적으로 .env 파일은 프로젝트 루트 디렉터리에 둔다.
myproject/
├── main.py
├── requirements.txt
└── .env
5. Python에서 .env 사용하기
파이썬 표준 라이브러리에는 .env 지원이 없으므로, python-dotenv 라이브러리를 설치해야 한다.
pip install python-dotenv
from dotenv import load_dotenv
import os
# .env 파일 불러오기
load_dotenv()
# 환경변수 읽기
db_user = os.getenv("DB_USER", "env에서 읽지 못하면 이 부분을 참조한다")
db_pass = os.getenv("DB_PASS", "env에서 읽지 못하면 이 부분을 참조한다")
api_key = os.getenv("API_KEY", "env에서 읽지 못하면 이 부분을 참조한다")
print(f"DB_USER={db_user}")
print(f"API_KEY={api_key}")
6. .env와 Git 보안 설정
.env 파일에는 비밀번호나 토큰 등이 들어 있기 때문에 GitHub에 업로드되면 안 된다.
이를 방지하려면 .gitignore 파일에 다음을 추가한다.
.env
이렇게 하면 .env 파일이 Git 버전 관리에서 제외된다.
7. 실전 예시: FastAPI에서 .env 사용하기
from fastapi import FastAPI
from dotenv import load_dotenv
import os
load_dotenv()
app = FastAPI()
@app.get("/config")
def read_config():
return {
"DB_HOST": os.getenv("DB_HOST"),
"DEBUG": os.getenv("DEBUG")
}
8. 정리
.env 파일은 파이썬 프로젝트에서 설정을 안전하고 유연하게 관리하는 핵심 도구다.
보안을 강화하고 환경별 설정을 쉽게 바꿀 수 있으며, 대부분의 프레임워크에서 기본적으로 지원된다.
요약
- .env는 환경 변수 설정 파일이다.
- KEY=VALUE 형식으로 작성한다.
- python-dotenv로 불러와서 사용한다.
- .gitignore에 .env를 반드시 추가한다.
9. 추가 팁
Docker Compose에서도 .env 파일을 그대로 사용할 수 있다.
.env
IMAGE_TAG=latest
DB_PORT=5432
docker-compose.yml
services:
db:
image: postgres:${IMAGE_TAG}
ports:
- "${DB_PORT}:5432"반응형
'Computer Science > CS 지식' 카테고리의 다른 글
| Kafka에 대해 간략하게 알아보기 (0) | 2025.08.22 |
|---|---|
| TLS 암호화 프로토콜 (2) | 2025.07.31 |
| 정보처리기사 실기에 나오는 네트워크 관련 용어 (0) | 2025.07.16 |
| 정보처리기사 실기에 나오는 해킹, 보안 관련 키워드 (0) | 2025.07.14 |
| 3상 전력계측 시 위상 틀어짐 진단 방법 (0) | 2025.07.04 |