새로운 프로젝트를 시작할 때마다 디렉토리를 만들고 .env 설정을 복사하는 일은 꽤 번거롭다.
이번엔 이런 초기 설정 과정을 한 번에 자동으로 만들어주는 스크립트를 작성했다(전체 스크립트는 가장 아래에).


프로젝트 초기화 스크립트 개요

init_project.py는 Python 프로젝트의 기본 디렉토리 구조와 환경설정 파일을 자동으로 생성한다.
한 번 실행하면 src/, data/, logs/, secrets/, .vscode/ 등 필요한 폴더가 모두 만들어지고,
.env.defaults, .env.local.example, .gitignore, config.py, config_logs.py 같은 필수 파일이 자동으로 생성된다.


사용법

python init_project.py

한 줄이면 끝이다.
실행 후에는 아래처럼 구조가 자동으로 구성된다:

project/
├── src/
│   ├── configs/
│   │   ├── config.py
│   │   └── config_logs.py
│   └── utils/
├── secrets/
│   ├── .env.defaults
│   └── .env.local.example
├── .vscode/
│   └── settings.json
├── data/
├── db/
├── logs/
├── notebooks/
└── .gitignore

주요 기능 정리

  • .env.defaults : 비민감 기본 설정 (커밋 가능)
  • .env.local.example : 민감정보 템플릿 (커밋 금지)
  • .gitignore : Python 캐시, 로그, secrets 폴더 자동 제외
  • config.py : 환경변수 계층 로드, DB 설정, 경로 관리
  • config_logs.py : 콘솔 컬러 로그 + 날짜별 로그 파일 관리
  • .vscode/settings.json : Python 인터프리터와 기본 분석 옵션

실행 후 바로 확인할 것

cp secrets/.env.local.example secrets/.env.local
# .env.local 파일을 열어 실제 API 키 입력

환경을 설정한 뒤 다음 명령으로 확인한다:

python src/configs/config.py

.env.defaults.env.local이 제대로 로드되는지, 누락된 키가 없는지 자동으로 출력된다.


구성 예시

config.py.env.defaults.env.local 순서로 로드한다.
로컬 설정이 기본값을 덮어쓰며, dotenv 패키지를 사용한다.

from src.configs.config import PATHS, DB_CONFIG
from src.configs.config_logs import setup_root_logger, setup_logger

setup_root_logger("myapp")
logger = setup_logger(__name__)

logger.info(f"Data directory: {PATHS['data']}")

이렇게 하면 콘솔에는 컬러 로그가 표시되고,
logs/YYYYMMDD-myapp.log 파일에 자동으로 기록된다.


마무리

이 스크립트를 쓰면 프로젝트 시작 준비 시간이 10분에서 10초로 줄어든다.
특히 여러 프로젝트를 병행하는 경우, 일관된 디렉토리 구조를 유지하기에 좋다.

필요한 기본 구조를 한 번에 만들어주는 초기화 스크립트로 이제 새 프로젝트를 만들 때 더 이상 손으로 설정할 일은 없다.

 

 

Posted by 공돌이pooh
,