본문 바로가기

Python

Poetry란 무엇인가?

728x90
반응형

Poetry는 Python 프로젝트 관리를 위한 종합적인 도구로, 의존성 관리 및 패키징을 간편하게 처리할 수 있도록 도와줍니다. Poetry는 가상 환경을 생성하고, 프로젝트 의존성을 관리하며, 패키지를 배포할 수 있는 기능을 제공합니다. 이 도구는 pyproject.toml 파일을 사용하여 프로젝트 설정을 저장합니다.

Poetry 설치

Poetry는 curl 명령어나 pip를 통해 설치할 수 있습니다.

curl -sSL https://install.python-poetry.org | python3 -

또는 

pip install poetry

설치가 완료되면, Poetry의 명령어를 사용할 수 있습니다.

Poetry 프로젝트 생성

Poetry를 사용하여 새로운 프로젝트를 생성하는 방법은 다음과 같습니다:

poetry new my_project

프로젝트 구조

기본 프로젝트 구조는 다음과 같습니다:

my_project/
├── pyproject.toml
├── README.rst
├── my_project
│   └── __init__.py
└── tests
    └── __init__.py

pyproject.toml 파일

이 파일은 프로젝트의 메타데이터와 의존성을 정의하는 곳입니다. 예를 들어, 다음과 같은 내용을 포함할 수 있습니다:

[tool.poetry]
name = "my_project"
version = "0.1.0"
description = "A short description of the project"
authors = ["Your Name <you@example.com>"]

[tool.poetry.dependencies]
python = "^3.8"
requests = "^2.25.1"

[tool.poetry.dev-dependencies]
pytest = "^6.2.4"

의존성 관리

Poetry를 사용하여 프로젝트 의존성을 추가, 제거 및 업데이트할 수 있습니다.

의존성 추가

poetry add requests

개발 의존성 추가

poetry add --dev pytest

의존성 제거

poetry remove requests

가상 환경 관리

Poetry는 가상 환경을 자동으로 생성하고 관리합니다. 가상 환경을 활성화하려면 다음 명령을 사용합니다

poetry shell

가상 환경을 종료하려면 일반적으로 exit 명령을 사용합니다.

스크립트 실행

Poetry는 가상 환경 내에서 스크립트를 실행할 수 있는 명령을 제공합니다

poetry run python script.py

패키징 및 배포

Poetry를 사용하여 패키지를 빌드하고 배포할 수 있습니다. 패키지를 빌드하려면 다음 명령을 사용합니다

poetry build

이 명령은 dist 디렉터리에 패키지를 생성합니다. 패키지를 배포하려면 다음 명령을 사용합니다

 

Poetry와 requirements 차이

Poetry와 requirements.txt는 Python 프로젝트에서 의존성을 관리하는 두 가지 방법으로, 각각의 방식에는 장단점이 있습니다. 아래에서 두 방법의 차이점과 장단점을 비교해보겠습니다.

구분 Poetry requirements.txt
개요 Poetry는 종합적인 Python 프로젝트 관리 도구로, 의존성 관리, 가상 환경 관리, 패키징 및 배포를 모두 지원합니다. requirements.txt 파일은 전통적인 Python 의존성 관리 방법으로, 프로젝트에 필요한 패키지와 그 버전을 목록으로 작성합니다.
장점
  1. 통합된 관리: Poetry는 의존성 관리, 가상 환경 생성 및 관리, 패키징 및 배포를 하나의 도구에서 제공합니다.
  2. 명확한 의존성 정의: pyproject.toml 파일을 사용하여 의존성과 개발 의존성을 명확하게 구분하여 정의할 수 있습니다.
  3. 의존성 해결: Poetry는 의존성 충돌을 자동으로 해결하고, 가장 적합한 버전을 선택합니다.
  4. 가상 환경 자동 관리: 프로젝트별로 가상 환경을 자동으로 생성하고 관리합니다.
  5. 일관된 빌드 시스템: 프로젝트 빌드 및 배포 과정이 일관되고 자동화되어 있습니다.
  1. 단순함: requirements.txt 파일은 간단하고 이해하기 쉽습니다. 파일에 패키지 이름과 버전을 작성하기만 하면 됩니다.
  2. 광범위한 호환성: 대부분의 Python 프로젝트와 도구들이 requirements.txt를 지원합니다.
  3. 유연성: 파이프라인이나 배포 스크립트에서 쉽게 사용 가능합니다.
단점
  1. 러닝 커브: 새로운 도구이므로 익숙해지기까지 시간이 필요할 수 있습니다.
  2. 상대적으로 낮은 호환성: 일부 오래된 프로젝트나 특정 환경에서는 호환성 문제가 발생할 수 있습니다.
  1. 의존성 해결 어려움: requirements.txt는 의존성 충돌을 자동으로 해결하지 않으며, 충돌이 발생하면 수동으로 해결해야 합니다.
  2. 명확한 구분 부족: 기본적으로 개발 의존성과 런타임 의존성을 구분할 수 있는 방법이 없습니다.
  3. 가상 환경 관리: 가상 환경 생성 및 관리가 별도로 필요합니다(예: virtualenv나 venv 사용).

요약

  • Poetry는 의존성 관리, 가상 환경 관리, 패키징 및 배포를 모두 통합하여 제공하며, 현대적인 Python 프로젝트 관리 도구입니다. 이는 더 많은 기능과 일관된 워크플로우를 제공하지만, 초기 학습이 필요할 수 있습니다.
  • **requirements.txt**는 단순하고 광범위하게 호환되며, 대부분의 Python 프로젝트에서 사용됩니다. 그러나 의존성 충돌 해결 및 가상 환경 관리에서 추가적인 수동 작업이 필요할 수 있습니다.
728x90
반응형