PYTHON · 파일/IO
파이썬 패키징 — pyproject.toml
PEP 621 표준인 pyproject.toml은 setup.py를 대체하는 선언적 패키지 설정 파일입니다. 빌드 시스템, 의존성, 메타데이터를 하나의 파일에 정의하며, pip, poetry, hatch 등 모든 도구가 지원합니다.
핵심 설명
PEP 621 표준인 pyproject.toml은 setup.py를 대체하는 선언적 패키지 설정 파일입니다. 빌드 시스템, 의존성, 메타데이터를 하나의 파일에 정의하며, pip, poetry, hatch 등 모든 도구가 지원합니다.
Python code
# === pyproject.toml 예제 ===
"""
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "my-awesome-lib"
version = "1.0.0"
description = "교육용 Python 패키지 예제"
readme = "README.md"
license = {text = "MIT"}
requires-python = ">=3.10"
authors = [
{name = "홍길동", email = "hong@example.com"},
]
dependencies = [
"requests>=2.28",
"pydantic>=2.0",
]
[project.optional-dependencies]
dev = ["pytest>=7.0", "ruff>=0.1.0", "mypy>=1.0"]
docs = ["sphinx>=7.0", "sphinx-rtd-theme"]
[project.scripts]
my-cli = "my_awesome_lib.cli:main"
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-v --tb=short"
[tool.ruff]
target-version = "py310"
line-length = 88
[tool.mypy]
strict = true
"""
# === 패키지 구조 ===
"""
my-awesome-lib/
├── pyproject.toml
├── README.md
├── src/
│ └── my_awesome_lib/
│ ├── __init__.py
│ ├── cli.py
│ └── core.py
└── tests/
├── __init__.py
└── test_core.py
"""
# === 빌드 & 배포 명령어 ===
import subprocess, sys
commands = {
"개발 모드 설치": "pip install -e '.[dev]'",
"패키지 빌드": "python -m build",
"PyPI 업로드": "python -m twine upload dist/*",
"린트 검사": "ruff check src/",
"타입 검사": "mypy src/",
"테스트 실행": "pytest",
}
print("패키징 워크플로우:")
for name, cmd in commands.items():
print(f" {name}: {cmd}")
# 실제 사용 예: 현재 환경의 패키지 정보
from importlib.metadata import version, requires
try:
pip_ver = version("pip")
print(f"\npip 버전: {pip_ver}")
except Exception:
print("\npip 정보를 가져올 수 없습니다")학습 팁
src/ 레이아웃을 사용하면 개발 중에 설치되지 않은 패키지를 실수로 import하는 것을 방지합니다. pip install -e .으로 editable 설치하면 코드 변경이 즉시 반영됩니다.
주의할 점
setup.py와 pyproject.toml을 동시에 사용하면 설정이 충돌할 수 있습니다. 새 프로젝트는 pyproject.toml만 사용하고, 기존 프로젝트는 점진적으로 마이그레이션하세요.
자주 묻는 질문
파이썬 패키징 — pyproject.toml란 무엇인가요?
PEP 621 표준인 pyproject.toml 은 setup.py 를 대체하는 선언적 패키지 설정 파일입니다. 빌드 시스템, 의존성, 메타데이터를 하나의 파일에 정의하며, pip, poetry, hatch 등 모든 도구가 지원합니다.
파이썬 패키징 — pyproject.toml 학습 시 주의할 점은 무엇인가요?
setup.py 와 pyproject.toml 을 동시에 사용하면 설정이 충돌할 수 있습니다. 새 프로젝트는 pyproject.toml 만 사용하고, 기존 프로젝트는 점진적으로 마이그레이션하세요.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.