Python 패키징과 TOML 정리

calico·2025년 8월 25일

Python

목록 보기
1/10

1. TOML


  • 정식 명칭: Tom’s Obvious, Minimal Language

  • 등장: 2013년 1월 (Tom Preston-Werner, GitHub 공동 창업자)

  • 표준 확정: 2021년 12월 (TOML 1.0.0)

  • 특징

    • Key-Value 기반의 단순하고 읽기 쉬운 설정 언어

    • 자료형(문자열, 숫자, 불리언, 날짜/시간) 지원

    • 주석 가능 (#)

    • JSON보다 가독성이 좋고, INI보다 자료형 지원이 풍부

    • Python, Rust, Go, Node.js 등에서 공식 지원

  • Python에서의 활용: pyproject.toml 파일로 패키지 메타데이터와 빌드 설정 관리 (PEP 518, PEP 621)



2. TOML 버전별 변화


버전발표 시기주요 특징
0.12013-01기본 Key-Value, 테이블 문법
0.2~0.42013~2014배열, 날짜/시간 타입 추가
0.52018-07UTF-8 지원 명시, 문법 안정화
1.0.02021-12표준 확정, 호환성 보장



3. TOML 문법 상세


3.1 Key-Value


title = "My Project"
version = "0.1.0"
debug = true
max_items = 100
pi = 3.14159



3.2 문자열


  • 큰따옴표(") 또는 작은따옴표(') 사용 가능

  • 여러 줄 문자열은 """ 또는 ''' 사용

single_line = "Hello"
multi_line = """
여러 줄
문자열
"""



3.3 불리언


is_active = true
is_deleted = false



3.4 숫자


integer = 42
float = 3.14



3.5 배열


tags = ["python", "packaging", "toml"]
numbers = [1, 2, 3, 4]



3.6 날짜/시간


release_date = 2024-06-01T12:00:00Z



3.7 테이블(섹션)


[author]
name = "홍길동"
email = "hong@example.com"



3.8 중첩 테이블


[database]
host = "localhost"
port = 5432

[database.credentials]
user = "admin"
password = "secret"



4. Python 패키징 방식 변화


4.1 전통 방식 — setup.py + setuptools


  • 구성: setup.pysetuptools.setup() 호출

  • 장점: 유연성, 오래된 프로젝트와 호환성 높음

  • 단점: 설정이 코드와 섞여 표준화 어려움

from setuptools import setup, find_packages
setup(
    name="my_package",
    version="0.1.0",
    packages=find_packages(),
    install_requires=["pandas>=1.3.0"]
)



4.2 하이브리드 방식 — setup.cfg + 최소한의 setup.py


  • 구성: 메타데이터는 setup.cfg(INI 포맷), 빌드 진입점만 setup.py

  • 장점: 설정과 코드 분리, 가독성 향상

  • 단점: INI 포맷은 자료형 표현 제한

[metadata]
name = my_package
version = 0.1.0
description = 데이터 분석 유틸리티
author = 홍길동
author_email = hong@example.com

[options]
packages = find:
install_requires =
    pandas>=1.3.0
    numpy>=1.21.0
python_requires = >=3.8
from setuptools import setup
setup()



4.3 최신 표준 방식 — pyproject.toml (PEP 518, PEP 621)


  • 구성: 모든 메타데이터와 빌드 설정을 TOML 포맷으로 작성

  • 장점

    • 표준화된 포맷

    • 빌드 백엔드(setuptools, poetry, flit) 선택 가능

    • 다른 언어/툴과 호환성 높음

  • 단점: 기존 사용자에게 생소, 일부 구버전 툴과 호환성 문제

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

[project]
name = "my_package"
version = "0.1.0"
description = "데이터 분석 유틸리티"
authors = [
    { name = "홍길동", email = "hong@example.com" }
]
dependencies = [
    "pandas>=1.3.0",
    "numpy>=1.21.0"
]
requires-python = ">=3.8"



5. 실무 트렌드 (2024년 기준)


시기주류 방식특징
과거 (~2018)setup.py유연성, 코드 기반 설정
과도기 (2018~2021)setup.cfg + setup.py설정/코드 분리, 가독성 향상
현재 (2021~)pyproject.toml표준화, 빌드 툴 선택 가능
미래pyproject.toml + Poetry/Flit의존성 관리 + 배포 통합



6. 핵심 요약


  • TOML은 2013년 등장, 2021년 표준 확정

  • Python 패키징은 setup.pysetup.cfgpyproject.toml로 발전

  • 신규 프로젝트는 pyproject.toml 기반을 권장

  • 빌드 툴은 setuptools, poetry, flit 중 선택 가능

  • TOML 문법은 단순하지만 자료형 지원이 풍부해 설정 관리에 적합



profile
All views expressed here are solely my own and do not represent those of any affiliated organization.

0개의 댓글