Day 20: 가상환경과 의존성
가상환경이 필요한 이유
프로젝트마다 다른 라이브러리 버전이 필요할 수 있습니다. 가상환경은 프로젝트별로 독립된 Python 환경을 만들어줍니다.
venv로 가상환경 만들기
# 가상환경 생성
python -m venv myenv
# 활성화 (Windows)
myenv\Scripts\activate
# 활성화 (macOS/Linux)
source myenv/bin/activate
# 비활성화
deactivate
pip 패키지 관리
# 패키지 설치
pip install requests
# 특정 버전 설치
pip install requests==2.31.0
# 설치된 패키지 확인
pip list
# requirements.txt 생성
pip freeze > requirements.txt
# requirements.txt로 일괄 설치
pip install -r requirements.txt
requirements.txt 예시
requests==2.31.0
beautifulsoup4==4.12.2
python-dotenv==1.0.0
프로젝트 구조 모범 사례
my-project/
├── venv/ # 가상환경 (gitignore에 추가)
├── src/
│ └── main.py
├── tests/
│ └── test_main.py
├── .gitignore
├── .env.example # 환경변수 템플릿
├── requirements.txt # 의존성 목록
└── README.md
.gitignore 설정
# 가상환경
venv/
.venv/
env/
# 환경변수
.env
# Python 캐시
__pycache__/
*.pyc
*.pyo
# IDE
.vscode/
.idea/
환경변수 관리
# .env.example (커밋 O)
# API_KEY=
# DATABASE_URL=
# .env (커밋 X)
# API_KEY=sk-xxxx
# DATABASE_URL=sqlite:///myapp.db
from dotenv import load_dotenv
import os
load_dotenv()
api_key = os.getenv("API_KEY")
db_url = os.getenv("DATABASE_URL", "sqlite:///default.db")
오늘의 연습문제
- 새 프로젝트용 가상환경을 만들고 필요한 패키지를 설치한 뒤
requirements.txt를 생성하세요. .env파일에서 설정을 읽어 사용하는 프로그램을 작성하세요.- 두 프로젝트에서 서로 다른 버전의 같은 라이브러리를 사용하는 상황을 재현하세요.