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