#04 – Modules & Modern Python Project Structure

개요

Python 프로젝트의 모듈, 패키지, 특수 변수, 현대적인 프로젝트 구조, 가상 환경 및 패키지 관리 도구인 uv의 사용법을 다룬다.

주요 내용

* 모듈 및 패키지:
* 모듈은 재사용 가능한 변수, 함수, 클래스를 포함하는 .py 파일이다.
* 패키지는 모듈의 디렉토리이며, __init__.py 파일은 패키지가 임포트될 때 실행되어 상위 레벨 API를 노출하고 내부 폴더 구조를 숨길 수 있다.
* 절대 임포트(from app.core import analyze)는 PEP 8에서 권장되며, 상대 임포트(from .utils import clean)는 현재 파일 기준의 임포트 방식이다.
* Python은 내장 모듈(os, sys, json)과 PyPI에서 설치하는 서드파티 모듈(requests, rich)을 제공한다.
* 특수 변수 및 엔트리 포인트:
* __name__ 변수는 파일이 직접 실행될 때 __main__ 값을 가지며, 모듈로 임포트될 때는 해당 파일의 이름을 가진다.
* if __name__ == "__main__": 패턴은 스크립트가 모듈로 임포트될 때 자동 실행되는 것을 방지하는 안전 장치 역할을 한다.
* 현대적인 프로젝트 구조:
* 전문 애플리케이션에서는 체계적인 프로젝트 구성이 코드베이스의 확장성, 배포 가능성, 테스트 가능성을 높인다.
* 간단한 프로젝트는 main.py, utils.py 등으로 구성될 수 있으며, 엔터프라이즈 레벨에서는 .git, .gitignore, pyproject.toml, uv.lock, app/ (코어 패키지), tests/ 등을 포함하는 구조를 사용한다.
* 가상 환경 및 패키지 관리:
* 가상 환경은 프로젝트별로 독립적인 Python 환경을 제공하여 의존성 충돌을 방지한다.
* uv는 Rust로 작성된 현대적인 패키지 관리 도구로, pipvenv보다 10-100배 빠른 설치, 설정, 컴파일 작업을 수행한다.
* uvuv init, uv venv, uv add, uv remove, uv sync, uv run 등의 명령어를 제공하여 워크플로우를 간소화한다.

시사점

Python 프로젝트를 구조화하고 관리하는 현대적인 방법을 제시하며, uv와 같은 도구를 활용하여 개발 생산성과 코드 품질을 향상시킬 수 있음을 보여준다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions