Coding Garden - Ready

김기훈·2026년 1월 23일

개인프로젝트

목록 보기
5/10
post-thumbnail

VSC 세팅

확장 프로그램 설치

  • 핵심

    • Python (Microsoft)
      • 용도
        • Python 언어 지원, 디버깅, 인터프리터 선택 등 기본 기능
      • 필수 이유
        • 설치하면 Pylance가 자동으로 같이 설치되는데
        • 이 두 가지가 VS Code Python 개발의 심장
    • Ruff (Astral Software)
      • 용도
        • 코드 오류 검사(Linting) + 코드 포맷팅(Formatting)
      • 추천 이유
        • 기존의 Black(포맷터), Isort(import 정렬), Flake8(오류 검사) 기능통합
        • 속도가 압도적으로 빠르고(Rust 기반), 설정이 매우 간편
  • 백엔드 개발 생산성 (Django & FastAPI)

    • Django (Baptiste Darthenay)
      • 용도
        • Django 템플릿(.html) 문법 강조, 자동 완성, 스니펫 지원
      • 추천 이유
        • VS Code는 기본적으로 Django 템플릿 문법을 몰라서 색깔이 밋밋하게 나오는데
        • 이걸 설치하면 코드가 보기 편해지고 자동 완성을 지원해 오타를 줄여줌
    • REST Client (Huachao Mao)
      • 용도
        • API 테스트 도구
      • 추천 이유
        • 무거운 Postman을 켤 필요 없이, VS Code 안에서 .http 파일을 만들어
        • 바로API 요청을 보내고 응답을 확인 가능 (개발 흐름이 끊기지 않음)
  • 코드 품질 & 협업

    • Mypy Type Checker (Microsoft)
      • 용도
        • 정적 타입 검사
      • 추천 이유
        • Python은 타입이 자유분방해서 버그가 잘 생기는데
          • FastAPI는 '타입 힌트'를 적극적으로 사용
        • Mypy는 코드를 실행하기 전에 타입 오류를 미리 잡아주어 버그를 획기적으로 줄여줌
    • GitLens — Git supercharged
      • 용도
        • Git 히스토리 관리
      • 추천 이유
        • "이 코드 누가, 언제 짰어?"를 바로 알 수 있음
        • 코드 옆에 회색 글씨로 작성자와 수정 시점이 뜨고
          • 이전 버전과 비교하기가 매우 편리 (협업할 때 필수)
  • 시각적 편의성 (선택 사항)

    • Error Lens
      • 용도
        • 에러 메시지 시각화
      • 추천 이유
        • 빨간 밑줄에 마우스를 올려야만 보이던 에러 메시지를 코드 바로 옆에 띄워줌
        • 에러를 바로바로 고치게 되어 수정 속도가 엄청 빨라짐
    • Material Icon Theme
      • 파일 탐색기의 아이콘을 예쁘게 바꿔주어
      • 파일 확장자(py, html, css 등)를 한눈에 구분하기 쉽게 해줌
  • 자동완성

    • 1단계: Pylance (Microsoft)(필수 기본)
      • 설명
        • 'Python' 확장 프로그램을 설치하면 자동으로 같이 깔림
      • 기능
        • print() 같은 기본 함수나 내가 만든 변수명을 자동으로 띄워주는
          • 가장 기초적인 자동완성
        • 별도로 설치할 필요 없이 Python 확장만 있으면 됨
    • 2단계: IntelliCode (Microsoft)(스마트 추천)
      • 설명
        • Pylance보다 조금 더 똑똑한 마이크로소프트의 인공지능
      • 기능
        • 단순히 알파벳 순서로 자동완성을 띄워주는 게 아니라
          • "이 상황에서는 이 함수를 쓸 확률이 높겠다" 싶은 것을 가장 위에 띄워줌
          • 코딩 속도가 훨씬 빨라짐
    • 3단계: AI 코드 생성(하나만 선택)
      • GitHub Copilot
        • 단어 하나만 쳐도 문장 전체를 완성해주는 AI 도구
        • 가장 성능이 좋음
        • 원래 유료였지만 최근에 무료 요금제(Free Plan)가 풀려서
          • 개인 사용자도 일정량 무료로 쓸 수 있음
      • Codeium
        • Copilot의 강력한 무료 대안
        • 개인 사용자에게 완전 무료이며 속도도 매우 빠름

세팅


Poetry 설치 확인

  • curl -sSL https://install.python-poetry.org | python3 -
  • 설치 후 터미널을 재시작하고 poetry --version

프로젝트 폴더 생성 및 초기화

  • 폴더 생성
    • 바탕화면 등에 폴더를 만듭니다 (예: my_django_project)
  • VS Code 실행
    • 해당 폴더를 VS Code로 엽니다
  • 터미널 열기
    • control + shift + ~ = Terminal > New Terminal.
  • Poetry 초기화
    • pyproject.toml 파일을 생성(-n 옵션은 질문 없이 기본값으로 생성하겠다는 의미)
      • poetry init -n

Django 설치 (의존성 추가)

  • Poetry를 통해 Django를 설치(이 과정에서 가상환경이 자동으로 생성됨)
    • poetry add django
    • 실행 후 폴더에 poetry.lock 파일이 생겼는지 확인

가상환경 활성화

  • Poetry가 만든 가상환경 안으로 들어가야
    • Django 명령어(django-admin)를 사용할 수 있음
    • poetry shell
      • 터미널 프롬프트 앞쪽에 (프로젝트이름-무작위문자열-py3.x) 같은 형태가 나타나면 성공

poetry shell 문제

➜  django_blog_project poetry shell

Looks like you're trying to use a Poetry command that is not available.

Since Poetry (2.0.0), the shell command is not installed by default. You can use,

  - the new env activate command (recommended); or
  - the shell plugin to install the shell command

Documentation: https://python-poetry.org/docs/managing-environments/#activating-the-environment

Note that the env activate command is not a direct replacement for shell command.
  • Poetry 2.0 최신 버전을 설치해서 발생한 문제
    • Poetry 2.0부터는 poetry shell 명령어가 기본 기능에서 빠지고
    • 별도의 플러그인으로 분리됨
      • poetry self add poetry-plugin-shell 설치 후
      • poetry shell

VS Code 인터프리터 설정

  • VS Code가 Poetry가 만든 가상환경을 인식해야 코드 자동완성 및 오류 검사가 작동함
    • Command (⌘) + Shift + P
    • 메뉴 검색 및 선택 검색창에 Select Interpreter 라고 입력하면
      • 아래 목록에 Python: Select Interpreter 라는 항목이 나옴 (이걸 클릭)
  • 목록에 Poetry 가상환경이 안 보인다면?
    • 사용하여 가상환경 경로 알아내기
      • poetry env info --path
    • Cmd + Shift + P -> Python: Select Interpreter
    • Enter interpreter path... (또는 인터프리터 경로 입력...)을 클릭

Django 프로젝트 구조 잡기

  • django-admin startproject config .
my_django_project/
├── .venv/ (혹은 poetry 설정에 따라 다른 곳에 있을 수 있음)
├── config/             <-- Django 설정 폴더
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py           <-- Django 실행 파일
├── poetry.lock         <-- 버전 잠금 파일
└── pyproject.toml      <-- 프로젝트 명세서

docker

파일 생성

  • .dockerignore 생성
    • 도커 이미지를 빌드할 때 불필요한 파일이 들어가는 것을 막아 빌드 속도를 높이고
      • 보안을 지키는 파일 (.gitignore와 비슷하지만 도커 전용)
  • Dockerfile 생성
    • 도커 이미지를 어떻게 만들지 정의하는 설계도
  • docker-compose.yml 생성

서버 실행 및 종료

  • docker-compose up
    • 서버 실행 / Control + C를 누르면 서버가 꺼짐
  • docker-compose up -d
    • 백그라운드 실행 (서버를 뒤에서 켜두고 터미널을 계속 씀)
  • docker-compose up --build
    • Dockerfile이나 패키지(poetry.lock)가 변경되었을 때, 이미지를 새로 만들고 실행
  • docker-compose down
    • 서버 종료 및 컨테이너 삭제 (네트워크도 정리됨)
  • docker-compose down -v
    • 서버 종료 + 데이터베이스 데이터까지 싹 다 삭제 (초기화 필요할 때만 사용)

Django 관련 명령어 실행

  • 도커 안에서 manage.py 명령어를 써야 할 때(마이그레이션, 슈퍼유저 생성 등) 사용
    • 로컬 터미널에 그냥 python manage.py ... 치면 에러
  • 실행 중인 컨테이너에 명령어 한 번만 날리기

  • 사용법: docker-compose exec [서비스명] [명령어]
      1. 마이그레이션 (DB 변경사항 적용)
      • docker-compose exec backend python manage.py migrate
      1. 슈퍼유저 생성 (관리자 계정)
      • docker-compose exec backend python manage.py createsuperuser
      1. 새 앱 만들기
      • docker-compose exec backend python manage.py startapp posts
  • 아예 컨테이너 내부 쉘로 접속하기

    • backend 서비스(Django)의 쉘(bash)로 접속
      • docker-compose exec backend bash
  • 로그 확인 (디버깅)

    • -d (백그라운드) 모드로 실행했을 때 로그를 볼 수 있음
      • docker-compose logs
        • 현재까지 쌓인 로그를 한 번 보여주고 끝남
      • docker-compose logs -f
        • 로그를 실시간으로 계속 보여줌 (Ctrl + C로 빠져나옴)
      • docker-compose logs -f backend
        • backend 서비스(Django)의 로그만 골라서 봄
      • docker-compose logs -f db
        • 데이터베이스 로그만 봄
  • 청소 및 관리 (용량 확보)

    • 도커를 오래 쓰다 보면 안 쓰는 이미지들이 쌓여서 용량을 차지함
      • docker-compose ps
        • 현재 실행 중인 컨테이너 상태를 확인
      • docker system prune -a
        • 사용하지 않는 모든 이미지, 컨테이너, 네트워크를 삭제하여 용량을 확보
          • 자주 해주면 좋음
      • docker volume prune
        • 사용하지 않는 볼륨(데이터)을 삭제 (주의: DB 데이터 날아갈 수 있음)

profile
안녕하세요.

0개의 댓글