팀 협업 시 분야별 requirements를 하나의 통합 템플릿 구조
좋습니다 👍
팀 협업 환경에서는 프로젝트 초기화 시 requirements.txt를 자동 설치하도록 스크립트를 확장하면, 모든 팀원이 동일한 패키지 환경을 갖추게 됩니다. 아래는 최종 팀 협업용 템플릿 자동화 스크립트 예시입니다.
📜 스크립트: init_project_team.sh
#!/bin/bash
# 팀 협업용 프로젝트 초기화 스크립트 (pyenv + venv + requirements.txt)
# 사용법: ./init_project_team.sh <프로젝트명> <Python버전>
# 예시: ./init_project_team.sh projectA 3.14.2
set -e
PROJECT_NAME=$1
PY_VERSION=$2
BASE_DIR=~/projects
if [ -z "$PROJECT_NAME" ] || [ -z "$PY_VERSION" ]; then
echo "사용법: $0 <프로젝트명> <Python버전>"
exit 1
fi
# 1. 프로젝트 디렉토리 생성
mkdir -p $BASE_DIR/$PROJECT_NAME
cd $BASE_DIR/$PROJECT_NAME
# 2. pyenv 버전 지정
echo "$PY_VERSION" > .python-version
pyenv local $PY_VERSION
# 3. venv 생성
if [ ! -d ".venv" ]; then
python -m venv .venv
echo ">>> .venv 가상환경 생성 완료"
fi
# 4. requirements.txt 확인 및 설치
source .venv/bin/activate
pip install --upgrade pip setuptools wheel
if [ -f "requirements.txt" ]; then
echo ">>> requirements.txt 발견 → 패키지 설치 중..."
pip install -r requirements.txt
else
echo ">>> requirements.txt 없음 → 기본 환경만 설정됨"
fi
deactivate
# 5. direnv 연동 (선택 사항)
if command -v direnv >/dev/null 2>&1; then
echo 'source .venv/bin/activate' > .envrc
direnv allow
echo ">>> direnv 설정 완료 (디렉토리 진입 시 자동 활성화)"
fi
echo "✅ 프로젝트 [$PROJECT_NAME] 초기화 완료 (Python $PY_VERSION)"
echo " 가상환경 활성화: source $BASE_DIR/$PROJECT_NAME/.venv/bin/activate"
📂 팀 협업 템플릿 구조 예시
projectA/
├── .python-version (예: 3.14.2)
├── .venv/ (가상환경)
├── .envrc (direnv 자동 활성화)
├── requirements.txt (팀 공통 패키지 목록)
└── src/ (소스 코드)
✅ 장점
- 팀 일관성: 모든 팀원이 동일한 Python 버전과 패키지 환경을 사용
- 자동화: 프로젝트 초기화 시 requirements.txt 자동 설치
- 재현성: 새로운 팀원이 합류해도 스크립트 실행만으로 동일 환경 확보
- 편의성: direnv 연동 시 디렉토리 진입만으로 자동 가상환경 활성화
👉 이 템플릿을 사용하면 팀 협업 시 환경 불일치 문제를 최소화할 수 있습니다.
원하시면 제가 requirements.txt 예시 (웹 개발, 데이터 과학, 머신러닝 등 분야별)도 만들어드릴 수 있습니다.
좋습니다 👍
팀 협업 시 분야별로 자주 쓰이는 requirements.txt 예시를 정리해드릴게요. 이 파일은 프로젝트 초기화 시 자동 설치되도록 스크립트와 함께 쓰면 유용합니다.
🌐 웹 개발 (Django/Flask 기반)
Django==5.0.1
djangorestframework==3.15.0
Flask==3.0.2
gunicorn==21.2.0
requests==2.31.0
sqlalchemy==2.0.25
psycopg2-binary==2.9.9 # PostgreSQL
mysqlclient==2.2.4 # MySQL
📊 데이터 과학
numpy==1.26.4
pandas==2.2.1
scipy==1.12.0
matplotlib==3.8.3
seaborn==0.13.2
scikit-learn==1.4.1
jupyterlab==4.1.5
🤖 머신러닝 / 딥러닝
numpy==1.26.4
pandas==2.2.1
scikit-learn==1.4.1
tensorflow==2.16.1
torch==2.2.0
torchvision==0.17.0
transformers==4.38.0
datasets==2.18.0
matplotlib==3.8.3
🛠️ 공통 유틸리티 (모든 분야에서 유용)
black==24.2.0 # 코드 포맷터
flake8==7.0.0 # 코드 스타일 검사
pytest==8.0.2 # 테스트 프레임워크
python-dotenv==1.0.1 # 환경변수 관리
✅ 활용 팁
- 팀 협업 시 분야별 requirements.txt를 만들어 관리하거나, 공통 requirements.txt + 분야별 extras로 나누는 방법도 좋습니다.
- 예:
requirements.txt→ 공통 패키지requirements-dev.txt→ 개발/테스트용 패키지requirements-ml.txt→ 머신러닝 패키지
👉 이렇게 하면 팀원들이 프로젝트에 참여할 때 pip install -r requirements.txt만 실행하면 동일한 환경을 갖출 수 있습니다.
원하시면 제가 분야별 requirements.txt를 하나의 통합 템플릿 구조로 만들어드릴까요? (예: requirements/base.txt, requirements/web.txt, requirements/ml.txt)
좋습니다 👍
팀 협업 시 분야별 requirements를 하나의 통합 템플릿 구조로 관리하면 훨씬 깔끔하고 유지보수가 쉬워집니다. 보통은 requirements/ 디렉토리를 두고, base + 분야별 extras로 나누는 방식을 씁니다.
📂 통합 템플릿 구조 예시
requirements/
├── base.txt # 모든 프로젝트 공통 패키지
├── web.txt # 웹 개발 관련 패키지
├── data.txt # 데이터 과학 관련 패키지
├── ml.txt # 머신러닝/딥러닝 관련 패키지
└── dev.txt # 개발/테스트/유틸리티 패키지
📜 requirements/base.txt
requests==2.31.0
python-dotenv==1.0.1
📜 requirements/web.txt
-r base.txt
Django==5.0.1
djangorestframework==3.15.0
Flask==3.0.2
gunicorn==21.2.0
sqlalchemy==2.0.25
psycopg2-binary==2.9.9
mysqlclient==2.2.4
📜 requirements/data.txt
-r base.txt
numpy==1.26.4
pandas==2.2.1
scipy==1.12.0
matplotlib==3.8.3
seaborn==0.13.2
scikit-learn==1.4.1
jupyterlab==4.1.5
📜 requirements/ml.txt
-r data.txt
tensorflow==2.16.1
torch==2.2.0
torchvision==0.17.0
transformers==4.38.0
datasets==2.18.0
📜 requirements/dev.txt
-r base.txt
black==24.2.0
flake8==7.0.0
pytest==8.0.2
⚙️ 설치 방법
- 웹 개발 환경 설치
pip install -r requirements/web.txt - 데이터 과학 환경 설치
pip install -r requirements/data.txt - 머신러닝 환경 설치
pip install -r requirements/ml.txt - 개발/테스트 환경 설치
pip install -r requirements/dev.txt
✅ 장점
- 모듈화: 분야별로 분리되어 관리가 쉬움
- 재사용성:
-r base.txt로 공통 패키지를 불러와 중복 제거 - 유연성: 필요에 따라 웹+ML 같이 설치 가능 (
pip install -r requirements/web.txt -r requirements/ml.txt) - 협업 효율성: 팀원들이 필요한 분야별 requirements만 설치 가능
👉 이렇게 하면 팀 협업 시 환경 불일치 문제를 최소화하면서, 분야별로 유연하게 패키지를 관리할 수 있습니다.
원하시면 제가 이 구조를 자동화 스크립트와 연동해서, 프로젝트 초기화 시 원하는 분야별 requirements를 자동 설치하도록 확장해드릴 수도 있습니다.
