pyproject.toml 톺아보기

2025. 4. 14. 01:36·Development/Project
728x90
반응형

Python 개발의 핵심:  pyproject.toml

pyproject.toml이란?

- Python 프로젝트의 의존성, 빌드 방식, 도구 설정을 통합 관리하는 구성 파일
- Python 공식 표준 (PEP 518)
- uv, poetry, black, pytest, ruff 등 다양한 도구와 연동됨

기본 구조 예시

[project]
name = "myapp"
version = "0.1.0"
description = "A sample Python project using pyproject.toml"
authors = [{ name = "Hyunmin", email = "hyunmin@example.com" }]
dependencies = [
    "requests>=2.31",
    "pydantic>=2.0,<3.0"
]
requires-python = ">=3.10"

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[tool.black]
line-length = 88
target-version = ["py310"]

[tool.ruff]
select = ["E", "F"]
ignore = ["E501"]

주요 섹션 설명

project

  • 프로젝트 기본 정보를 설정
  • 의존성 정의를 포함

주요 항목

  • name: 프로젝트 이름
  • version: 프로젝트의 버전 (자유롭게 지정가능, SemVer 권장)
  • description: 프로젝트의 설명
  • authors: 이름/이메일
  • dependencies: 의존성 패키지 목록 (requirements.txt를 대체 가능)
  • requires-python: 최소 Python 버전

build-system

  • 프로젝트 빌드시 사용할 도구 지정
  • 패키지를 설치하거나 빌드할 때 어떤 도구를 사용할지 Python에게 알려주는 역할
  • 과거엔 setup.py로만 가능했지만, PEP 517/518 도입 이후부터는 해당 방식이 표준

주요 항목

  • requires: 빌드에 필요한 패키지들. 보통 setuptools, wheel, 혹은 poetry 등
  • build-backend:실제 빌드 실행을 담당하는 도구의 Python 모듈 이름

 

tool

    • 코드 품질 관리나 테스트 자동화를 위한 외부 도구들의 설정
    • pyproject.toml을 통해 다양한 개발 도구의 설정을 중앙에서 관리할 수 있음
    • 팀 프로젝트에서 일관된 개발 환경 유지에 도움

지원 도구

  • black, ruff, pytest, isort, mypy, poetry, uv 등

 

pyproject.toml vs requirements.text

항목 pyproject.toml requirements.txt
목적 전체 설정 통합 의존성 명시
종속성 고정 가능 (uv.lock) 직접 명시
확장성 높음 낮음
최신 표준 ✅ ❌

 

도구 추천

  • uv: 초고속 패키지 설치 + uv.lock 생성
  • poetry: 의존성 + 빌드 + 배포 통합 관리
  • black, ruff, pytest: 코드 포맷팅, 정적 검사, 테스트
  • build, flit, hatch: PyPI 업로드 및 패키징 빌드 시스템

 

요약

  • pyproject.toml은 Python 프로젝트 관리의 표준
  • 복잡한 설정을 한 곳에서 통합 가능
  • 의존성 설치부터 린터/테스트 도구 설정까지 커버
  • requirements.txt보다 더 강력하고 깔끔한 구성
728x90
반응형

'Development > Project' 카테고리의 다른 글

Python 패키지/환경/버전 통합 관리 도구 UV 정리  (2) 2025.04.22
'Development/Project' 카테고리의 다른 글
  • Python 패키지/환경/버전 통합 관리 도구 UV 정리
Data Include Me
Data Include Me
AI, LLM, 머신러닝, 파이썬 등 최신 정보와 튜토리얼을 제공하는 데이터 사이언스 전문 블로그입니다.
  • Data Include Me
    Data Include Me
    Data Include Me
  • 전체
    오늘
    어제
    • 전체 (35)
      • AI (16)
        • Machine Learing (2)
        • Deep Learning (0)
        • Natural Language Processing (4)
        • Large Language Model (7)
        • Computer Vision (3)
      • Data Science (10)
        • Data Analysis (1)
        • Statistics & Math (3)
        • Data Engineering (6)
        • Data Visualization (0)
      • Programming Challenges (2)
        • Baekjoon (0)
        • Programmers (2)
        • HackerRank (0)
      • Development (7)
        • Cloud & DevOps (5)
        • Project (2)
  • 인기 글

  • 태그

    Cloud Computing
    sympy
    integral
    Python
    Crawling
    llm
    LangChain
    티스토리챌린지
    mcp
    오블완
  • 링크

    • Github
    • Linkedin
  • 반응형
  • hELLO· Designed By정상우.v4.10.1
Data Include Me
pyproject.toml 톺아보기
상단으로

티스토리툴바