Poetry로 Python 의존성 관리

coille·2024년 5월 1일
0

Python 프로젝트를 진행하다 보면 다양한 패키지를 사용하게 되고, 이를 효과적으로 관리하는 것이 중요합니다. 패키지 의존성 관리, 가상환경 설정 등 번거로운 작업을 간편하게 해주는 도구로 Poetry를 소개합니다.

Poetry란?

Poetry는 Python 패키지 관리를 위한 강력한 도구로, 다른 패키지 관리 도구에 비해 명확하고 일관된 환경을 제공합니다. 주요 기능은 다음과 같습니다.

  • 의존성 관리
    • pyproject.toml 파일을 사용하여 의존성을 명시적으로 관리
    • 버전 충돌이나 호환성 문제를 최소화하여 프로젝트 안정성 향상
  • 가상환경 통합
    • 프로젝트별로 독립적인 가상환경을 자동으로 생성하고 관리
    • 시스템 전역 환경을 오염시키지 않고 프로젝트 간 충돌 방지
  • 빌드 및 배포 지원
    • 프로젝트 빌드, 패키지 배포를 지원하여 패키지 버전 관리와 배포 간소화

시스템 요구사항

Poetry는 Python 3.8 이상을 필요로 하며, Linux, macOS, Windows에서 동일하게 잘 작동하도록 하는 것이 목표입니다.

설치

pipx를 사용한 설치 (권장)

pipx는 Python CLI 애플리케이션을 글로벌하게 설치하면서도 가상환경에서 격리시켜주는 도구입니다.

pipx install poetry

공식 인스톨러를 사용한 설치

Poetry 전용 가상환경을 생성하고 Poetry가 자체 환경을 관리할 수 있도록 해주는 사용자 정의 설치 관리자를 제공합니다.

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

설치 후에는 PATH에 ${HOME}/.local/bin(Unix) 또는 %APPDATA%\Python\Scripts(Windows)를 추가해야 합니다.

직접 설치

Poetry를 pip와 venv 모듈을 사용하여 수동으로 설치할 수도 있습니다.

python3 -m venv $VENV_PATH
$VENV_PATH/bin/pip install -U pip setuptools 
$VENV_PATH/bin/pip install poetry

주요 명령어

  • poetry new [project-name]: 새로운 Python 프로젝트 생성
  • poetry init: 기존 프로젝트에 pyproject.toml 파일 생성
  • poetry install: pyproject.toml에 정의된 의존성 패키지 설치
  • poetry add [package-name]: 의존성 패키지 추가
  • poetry remove [package-name]: 의존성 패키지 제거
  • poetry update: 의존성 패키지를 최신 버전으로 업데이트
  • poetry lock: 의존성 잠금 파일(poetry.lock) 생성 또는 업데이트
  • poetry show: 설치된 패키지 목록 확인
  • poetry run: 가상환경에서 명령어 실행
  • poetry shell: 가상환경 활성화
  • poetry build: 프로젝트 빌드
  • poetry publish: 패키지를 저장소(PyPI)에 배포

사용 예시

예시 1: 새로운 프로젝트 생성 및 실행

  1. 새로운 프로젝트 생성
poetry new my-project
cd my-project
  1. 필요한 패키지 추가
poetry add requests
  1. 코드 작성 (my_project/main.py)
import requests

response = requests.get('https://api.github.com')
print(response.status_code)
  1. 스크립트 실행
poetry run python my_project/main.py

예시 2: 기존 프로젝트에 Poetry 적용

  1. 프로젝트 디렉토리로 이동
cd my-existing-project
  1. Poetry 초기화
poetry init
  1. 기존에 사용하던 requirements.txt로부터 의존성 추가
cat requirements.txt | xargs poetry add
  1. 가상환경 활성화 및 명령어 실행
poetry shell
python main.py

예시 3: 패키지 배포

  1. pyproject.toml 파일 설정
[tool.poetry]
name = "my-package"
version = "0.1.0"
description = "My awesome package"
authors = ["Your Name <you@example.com>"]

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

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

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
  1. 빌드
poetry build
  1. PyPI에 배포
poetry publish

Poetry를 사용하면 가상환경 생성, 의존성 패키지 관리, 프로젝트 실행 등을 간편하게 수행할 수 있습니다. 또한 Poetry는 프로젝트 배포와 빌드도 지원하므로, Python 라이브러리와 애플리케이션 개발에 최적화된 도구라고 할 수 있습니다.

Poetry에 대해 더 자세히 알고 싶다면 공식 문서를 참고하시기 바랍니다. Bash, Fish, Zsh에 대한 자동완성 설정 방법, CI/CD에서의 활용 팁 등 유용한 정보가 많이 제공되고 있습니다.

Python 프로젝트 관리를 보다 편리하고 안정적으로 하고 싶다면 Poetry를 적극 활용해 보시기를 추천합니다.

참고 : poetry 공식사이트

profile
Technical Project Manager / DevOps Engineer / System Engineer

0개의 댓글