728x90

pyproject.toml이란?

파이썬 프로젝트의 표준 파일로, PEP 518PEP 621에 따라 정의됨

pyproject.toml는 프로젝트의 메타데이터 및 빌드에 필요한 도구들의 설정을 포함하는 설정파일

pyproject.toml 등장 배경

setuptools는 파이썬 프로젝트를 패키징하는 라이브러리로 널리 사용되었음

setuptools는 설정파일로 setup.py를 사용하는데, setuptools에 종속적임

setuptools가 파이썬 표준 라이브러리가 아니고, 다른 여러 빌드 시스템이 존재하기 때문에 개선할 필요성이 있었음

 

이를 개선하기 위해 특정 빌드 시스템에 종속되지 않는 선언적인 설정 파일 pyproject.toml이 제안됨

setup.py 대신 pyproject.toml을 사용한다는 것은 setuptools라는 특정한 라이브러리에 파이썬 패키징 시스템이 종속되지 않게 된다는 것을 의미함

pyproject.toml의 빌드시스템 설정파일로 사용하는 방법

pyproject.toml은 TOML 포맷으로 만들어진 설정파일

파이썬 패키지를 어떻게 빌드하는지, 어떤 빌드 시스템을 사용해야 하는지를 명시

 

<setuptools를 빌드시스템으로 사용하는 pyproject.toml 예시>

# pyproject.toml 예시
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

 

<flit을 빌드시스템으로 사용하는 pyproject.toml 예시>

[build-system]
requires = ["flit_core"]
build-backend = "flit_core.buildapi"

pyproject.toml에 그 외 설정을 저장하는 방법

개발과 관련된 설정 값을 관리하는 용도로도 pyproject.toml을 사용할 수 있음

빌드 전에 수행되어야 하는 테스트, 코드 포맷팅 등에 대한 정보를 pyproject.toml에 함께 적으면 유용함

 

<코드 포맷팅 도구 black, 테스트용 프레임워크 pytest의 설정값을  pyproject.toml에 저장하는 예시>

# pyproject.toml of black
[tool.black]
line-length = 88
target-version = ['py37', 'py38', 'py39', 'py310']
include = '\.pyi?$'
exclude = '''
/(
  \.git
  | \.mypy_cache
  | \.venv
  | _build
  | build
  | dist
)/
'''

# pyproject.toml of pytest
[tool.pytest.ini_options]
minversion = "6.0"
addopts = "-ra -q"
testpaths = ["tests"]

참고

- 파이썬 패키징의 과거, 현재, 그리고 미래

728x90

+ Recent posts