2024. 7. 2. 23:49
LLM FullStacker/Python
pyproject.toml과 requirements.txt는 Python 프로젝트에서 의존성을 관리하는 데 사용되는 파일이지만, 그 목적과 기능은 다릅니다. 두 파일 간의 주요 차이점을 살펴보겠습니다.
pyproject.toml
pyproject.toml은 Python 프로젝트의 메타데이터 및 의존성을 선언하는 데 사용되는 파일입니다. 이 파일은 PEP 518에 정의되어 있으며, 프로젝트 빌드 시스템과 빌드 의존성을 지정하는 데 사용됩니다. Poetry와 같은 현대적인 패키지 관리 도구는 pyproject.toml을 사용하여 프로젝트의 모든 의존성을 관리합니다.
주요 특징
- 메타데이터 관리: 프로젝트 이름, 버전, 설명, 저자 등의 메타데이터를 포함합니다.
- 의존성 관리: 개발 및 런타임 의존성을 모두 포함할 수 있습니다.
- 빌드 시스템 설정: 빌드 백엔드(예: setuptools, poetry 등)를 지정할 수 있습니다.
- Poetry 통합: Poetry는 pyproject.toml 파일을 사용하여 패키지 관리와 의존성 설치를 수행합니다.
예시
[tool.poetry]
name = "my_project"
version = "0.1.0"
description = "A sample project"
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.8"
requests = "^2.25.1"
[tool.poetry.dev-dependencies]
pytest = "^6.2.3"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
requirements.txt
requirements.txt는 전통적인 방법으로 Python 프로젝트의 의존성을 관리하는 파일입니다. 주로 pip를 사용하여 의존성을 설치할 때 사용되며, 각 의존성을 별도의 줄에 작성합니다.
주요 특징
- 단순성: 각 줄에 하나의 패키지와 선택적인 버전 제한을 작성하여 의존성을 명시합니다.
- 의존성 설치: pip install -r requirements.txt 명령어를 사용하여 의존성을 설치합니다.
- 개발 및 런타임 의존성 분리 어려움: 개발 및 런타임 의존성을 명확히 분리하기 어렵습니다.
예시
requests==2.25.1
pytest==6.2.3
비교 및 차이점
특징pyproject.tomlrequirements.txt
목적 | 프로젝트 메타데이터 및 의존성 관리 | 의존성 목록 관리 |
포맷 | TOML | 단순 텍스트 |
의존성 종류 분리 | 개발 및 런타임 의존성 분리 가능 | 분리하기 어려움 |
빌드 시스템 통합 | 빌드 시스템 및 백엔드 지정 가능 | 해당 없음 |
사용 도구 | Poetry, setuptools 등 | pip |
기타 설정 | 빌드 설정, 스크립트 등 다양한 설정 포함 가능 | 해당 없음 |
선택 기준
- 현대적인 프로젝트 관리: Poetry와 같은 도구를 사용하여 의존성을 보다 체계적으로 관리하고 싶다면 pyproject.toml을 사용하는 것이 좋습니다.
- 전통적인 방법: 간단하게 의존성만 관리하고 싶다면 requirements.txt가 충분할 수 있습니다.
함께 사용하기
Poetry를 사용하면서도 requirements.txt 파일을 생성하여 기존의 워크플로우와 호환성을 유지할 수 있습니다. 다음 명령어를 사용하여 requirements.txt 파일을 생성할 수 있습니다:
poetry export -f requirements.txt --output requirements.txt
이렇게 하면, pyproject.toml에서 관리되는 의존성을 requirements.txt 형식으로 내보낼 수 있어 기존 도구들과 호환성을 유지할 수 있습니다.
요약
- pyproject.toml은 프로젝트 메타데이터, 의존성 및 빌드 설정을 포함하는 현대적인 방식의 관리 파일입니다.
- requirements.txt는 단순히 의존성을 나열하는 전통적인 텍스트 파일입니다.
- pyproject.toml은 더 많은 기능과 유연성을 제공하며, 특히 Poetry와 같은 도구와 함께 사용할 때 유용합니다.
- requirements.txt는 간단하고 널리 사용되지만, 개발 및 런타임 의존성 분리가 어렵고, 빌드 시스템 설정과 같은 고급 기능을 제공하지 않습니다.
References
https://teddylee777.github.io/poetry/poetry-tutorial/
'LLM FullStacker > Python' 카테고리의 다른 글
[Python] docstring 스펙 (0) | 2024.08.04 |
---|---|
[Python] 튜플, 리스트, 딕셔너리 자료구조 이해 (7) | 2024.07.22 |
[Python] lambda 이해 (0) | 2024.07.02 |
[Python] Version Manager & Poetry 설치, 사용하기 (0) | 2024.06.17 |
[Dart] Dart 배우는 방법 (0) | 2014.12.31 |