❓
Poetry: 패키지 의존성 관리, 가상 환경 제공, 프로젝트 시작을 쉽게 만들어주는 도구

📌 Content.


기존 Python 패키지 관리의 문제점

Python 패키지 관리를 위해서는 보편적으로 requirements.txt라는 파일을 사용된다. 다만 이 파일은 필요한 패키지의 목록만 단순하게 나열한 느낌. 개발에 필요한 패키지 vs 실제 배포에 필요한 패키지를 명확히 구분하기 힘들어 나중에는 관리가 복잡해질 수 있다. 또한 서로 다른 패키지가 동일한 라이브러리의 다른 버전을 요구할 때 의존성 충돌이 발생할 수도 있다.

여기서 등장한 Poetry

주요 기능

  • pyproject.toml 파일: 프로젝트의 메타데이터와 의존성을 관리하는 파일 (모든 정보를 이 파일 한 곳에 저장)

  • 패키지 구분: 개발용 패키지와 배포용 패키지를 구분할 수 있어 프로젝트 관리가 간편해진다.

  • poetry.lock 파일: 정확한 의존성 버전을 기록하여, 팀원 간의 환경 차이를 줄이고 안정성을 높일 수 있다.

장점

  • 명확한 구분: 개발 환경과 배포 환경을 명확히 구분하여, 혼란을 줄일 수 있다.

  • 의존성 문제 해결: 의존성 충돌 문제를 효과적으로 관리할 수 있게된다.

Poetry 사용 방법


Poetry 설치

터미널에서 다음 명령어 실행(Mac OS 기준)

curl -sSL https://install.python-poetry.org | python3 -
**윈도우에서의 설치방법**
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

설치가 완료된 후에는, 쉘을 재시작하거나 설치 스크립트에서 제공하는 명령어를 실행하여 설치 완료 필요

Poetry 최신 버전으로 업데이트

poetry self update

프로젝트 시작

Poetry로 새 프로젝트를 시작하는 방법 두 가지

  • 기존 디렉토리 초기화:
poetry init
  • 새 디렉토리와 기본 구조 자동 생성:
poetry new 프로젝트이름

패키지 관리

  • 패키지 추가:
poetry add 패키지명
  • 개발 의존성으로 추가:
poetry add --dev 패키지명
  • 특정 버전 패키지 추가:
poetry add [email protected]
  • 패키지 삭제:
poetry remove 패키지명

가상환경 관리

  • 가상 환경 활성화:
poetry shell
  • 비활성화:
deactivate

의존성 내보내기

프로젝트의 의존성을 requirements.txt 파일로 내보내고 싶을 때

poetry export -f requirements.txt --output requirements.txt

프로젝트 빌드 및 배포

  • 빌드
poetry build
  • PyPI에 배포
poetry publish