.env 파일 및 python-dotenv
.env 파일 로드, .gitignore 규칙, dotenv 모범 사례를 다룹니다.
.env 파일 및 python-dotenv은(는) CoddyKit의 무료 AI Agents 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Agents 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
셸에서 export를 사용하는 방식의 문제
셸에서 export로 환경 변수를 설정하는 방식은 작동하지만, 새로운 터미널 세션을 열 때마다 다시 설정해야 합니다. 이런 방식으로 많은 변수를 관리하면 오류가 발생하기 쉽고 팀원과 공유하기도 어렵습니다.
.env 파일은 모든 프로젝트 변수를 자동으로 로드되는 하나의 파일에 저장하여 이 문제를 해결합니다.
.env 파일 형식
.env 파일에는 줄마다 하나씩 KEY=VALUE 쌍이 들어 있습니다. #으로 시작하는 줄은 주석입니다. 값은 선택적으로 따옴표로 묶을 수 있습니다. 이 단순한 형식은 수십 가지 도구와 프레임워크에서 지원됩니다.
# .env file (NEVER commit this file to git)
# Required API keys
OPENAI_API_KEY=sk-proj-your-real-key-here
SEARCH_API_KEY=tvly-your-tavily-key-here
# Optional settings with defaults
AGENT_MODEL=gpt-4o-mini
AGENT_MAX_STEPS=20
LOG_LEVEL=DEBUG
# Database (optional — disables memory storage if not set)
# DATABASE_URL=postgresql://user:pass@localhost/agentdb
# Environment identifier
ENV=developmentpython-dotenv로 .env 로드하기
pip install python-dotenv로 python-dotenv를 설치하십시오. os.environ을 읽기 전에 진입점의 맨 위에서 load_dotenv()를 호출하십시오. 이 함수는 .env 파일을 로드하고 환경을 채웁니다.
# pip install python-dotenv
from dotenv import load_dotenv
import os
# Load .env file — call this BEFORE reading any env vars
load_dotenv()
# Now all variables from .env are available via os.environ
openai_key = os.environ['OPENAI_API_KEY']
model = os.getenv('AGENT_MODEL', 'gpt-4o-mini')
max_steps = int(os.getenv('AGENT_MAX_STEPS', '20'))
print(f'Model: {model}, Max steps: {max_steps}')load_dotenv() 옵션
load_dotenv()에는 몇 가지 유용한 옵션이 있습니다. dotenv_path=는 사용자 지정 경로를 지정하고, override=True는 기존 환경 변수를 덮어씁니다(기본값은 기존 변수를 건너뜁니다). verbose=True는 어떤 파일이 로드되었는지 로그로 기록합니다.
from dotenv import load_dotenv
import os
# Load from a specific path
load_dotenv(dotenv_path='/path/to/custom/.env')
# Override existing environment variables
# (by default, existing vars are NOT overridden)
load_dotenv(override=True)
# Load a specific environment file
env_file = os.getenv('ENV_FILE', '.env')
load_dotenv(dotenv_path=env_file, verbose=True)
# Find .env automatically (searches up the directory tree)
from dotenv import find_dotenv
load_dotenv(find_dotenv())dotenv_values()로 명시적 설정 딕셔너리 사용하기
dotenv_values()는 환경을 수정하지 않고 .env 파일의 내용을 Python 딕셔너리로 반환합니다. 프로세스 환경을 오염시키지 않고 설정을 검사하거나 사용하려 할 때 유용합니다.
from dotenv import dotenv_values
# Read .env into a dict without touching os.environ
config = dotenv_values('.env')
print(config.get('AGENT_MODEL')) # 'gpt-4o-mini'
print(config.get('LOG_LEVEL')) # 'DEBUG'
# Merge .env with actual environment (env vars take priority)
import os
combined = {**dotenv_values('.env'), **os.environ}
# This means actual environment variables override .env values
# Useful for CI where env vars are injected by the pipeline.env.example 파일
자리표시자 값으로 모든 필수 변수를 문서화하는 .env.example 파일을 만드십시오. 이 파일은 git에 커밋되는 파일(IS)이며, 팀원과 새 개발자에게 무엇을 구성해야 하는지 알려 주는 문서 역할을 합니다.
# .env.example — commit this file to git
# Copy to .env and fill in real values:
# cp .env.example .env
# Required API keys (get from respective providers)
OPENAI_API_KEY=sk-proj-your-openai-key-here
SEARCH_API_KEY=tvly-your-tavily-key-here
# Optional settings
AGENT_MODEL=gpt-4o-mini
AGENT_MAX_STEPS=20
LOG_LEVEL=INFO
ENV=development
# Database (optional)
# DATABASE_URL=postgresql://user:password@localhost:5432/agentdb.env를 .gitignore에 추가하기
.env 파일은 git에 절대(NEVER) 커밋해서는 안 됩니다. 프로젝트를 만들 때 즉시 .gitignore에 추가하십시오. 첫 커밋 전에 해당 파일이 무시되는지 확인하십시오.
# .gitignore — add these lines
# Environment files with real secrets
.env
.env.local
.env.production
.env.staging
# But DO commit these:
# .env.example (placeholder values, safe to share)
# Verify .env is ignored before committing:
# git check-ignore -v .env
# .gitignore:1:.env .env <-- means it IS ignored (good)
# If .env was already tracked:
# git rm --cached .env
# git commit -m 'Remove .env from tracking'
# echo '.env' >> .gitignore.env 커밋을 차단하는 사전 커밋 훅
.env 파일이 포함된 모든 커밋을 차단하는 사전 커밋 훅을 추가하십시오. 누군가 .gitignore 확인을 잊더라도 자동 안전장치가 작동합니다.
# .git/hooks/pre-commit (make executable: chmod +x .git/hooks/pre-commit)
#!/bin/sh
# Block commits that include .env files with real content
if git diff --cached --name-only | grep -qE '^\.env$';
then
echo 'ERROR: .env file is staged for commit!'
echo 'This file contains secrets and must NOT be committed.'
echo 'Run: git reset HEAD .env'
exit 1
fi
# Also check for common secret patterns in any staged file
if git diff --cached | grep -qE '(sk-proj-|tvly-|xai-)';
then
echo 'WARNING: Possible API key detected in staged changes!'
echo 'Review carefully before committing.'
fi
exit 0프레임워크별 .env 로드하기
많은 프레임워크는 .env 파일을 자동으로 로드합니다. FastAPI(pydantic-settings 사용), Django(django-environ 사용), Docker Compose는 모두 .env를 기본적으로 지원합니다. 이러한 방식을 알면 중복 로드를 피할 수 있습니다.
# FastAPI with pydantic-settings (auto-loads .env):
# pip install pydantic-settings
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
openai_api_key: str
agent_model: str = 'gpt-4o-mini'
log_level: str = 'INFO'
class Config:
env_file = '.env'
# settings = Settings() # auto-reads .env and validates types
# print(settings.agent_model) # 'gpt-4o-mini'
# FastAPI is also fine with plain load_dotenv() at the top of main.py
# No need to use pydantic-settings for simple agents환경별 여러 .env 파일
환경별로 별도의 .env 파일을 사용하십시오. 예를 들어 .env.development, .env.staging, .env.production을 사용할 수 있습니다. ENV 변수에 따라 올바른 파일을 로드하십시오.
import os
from dotenv import load_dotenv
# Determine which environment to load
env = os.getenv('ENV', 'development')
# Try environment-specific file first, fall back to base .env
env_file = f'.env.{env}'
if os.path.exists(env_file):
load_dotenv(env_file)
print(f'Loaded {env_file}')
else:
load_dotenv('.env')
print('Loaded .env')
# Usage:
# ENV=staging python agent.py -> loads .env.staging
# ENV=production python agent.py -> loads .env.production
# python agent.py -> loads .env (default development)전체 설정 확인 목록
새 에이전트 프로젝트를 위한 완전한 .env 설정 확인 목록입니다:
- 실제 키가 포함된
.env를 생성하십시오(커밋하지 않기) - 자리표시자가 포함된
.env.example을 생성하십시오(이 파일은 커밋) .env를.gitignore에 추가하십시오- 진입점 맨 위에
load_dotenv()를 추가하십시오 - 시작할 때 필수 변수를 검증하십시오
- README 설정 안내에
cp .env.example .env를 추가하십시오
지식 확인: .env 파일과 python-dotenv
.env 파일과 python-dotenv 라이브러리에 대한 이해도를 확인하십시오.
복습: .env 파일과 python-dotenv
이제 에이전트 프로젝트를 위한 완전한 .env 작업 흐름을 갖추었습니다:
- 실제 값이 포함된
.env파일을 생성하십시오. 절대 커밋하지 마십시오 - 자리표시자가 포함된
.env.example을 생성하십시오. 항상 커밋하십시오 .env*를.gitignore에 추가하십시오(.env.example 제외)- 진입점의 맨 위에서
load_dotenv()를 호출하십시오 - os.environ을 건드리지 않고 딕셔너리에 접근하려면
dotenv_values()를 사용하십시오 - 환경별로 별도의 파일을 사용하십시오(
.env.staging,.env.production)
이 방식은 비밀 정보를 git에서 분리하면서 로컬 개발을 쉽게 해 줍니다.
자주 묻는 질문
“.env 파일 및 python-dotenv” 강의는 무료인가요?
네 — “.env 파일 및 python-dotenv” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Agents 강의 전체를 잠금 해제할 수 있습니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
“.env 파일 및 python-dotenv”에서 뭘 배우나요?
.env 파일 로드, .gitignore 규칙, dotenv 모범 사례를 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AI Agents을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AI Agents은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“.env 파일 및 python-dotenv” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AI Agents 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AI Agents 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 에이전트를 위한 환경 변수
- .env 파일 및 python-dotenv
- 비밀 정보 교체 및 보안
- 개발 및 운영 환경 구성 프로필