Poetry

2020년 7월 24일 수정

Poetry

Poetry는 파이썬(Python)용 패키징 겸 의존성 관리를 도와주는 도구다.

프로젝트 시작하기

poetry new PROJECT_NAME

이미 존재하는 프로젝트에 환경 만들기

poetry init

프로젝트에 의존성 추가

poetry add PACKAGE_NAME

특정 버전을 설치하려면 pip와 비슷하게 할 수 있다.

poetry add PACKAGE_NAME==x.y.z

개발 전용 패키지라면 --dev 플래그를 추가해주자.

poetry add --dev PACKAGE_NAME

패키지 버전 조건

설치한 패키지들은 pyproject.toml 파일에서 찾을 수 있다. 대충 아래와 같은 식이다.

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

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

여기서 꺽쇠(^)의 의미는 '메이저 업데이트를 제외한 최신 버전' 이라는 의미이다. 즉 ^3.10.0 이라는 의미는 3.x.y 버전 중 가장 최신 버전을 사용한다는 의미다. 다르게 표현하면 >=3.10.0<4.0.0 을 만족하는 버전이라는 의미다.

의존 패키지 일괄 설치

poetry install

pip install -r requirements.txt 커맨드와 비슷한 용도다.

패키지 버전 일괄 업데이트

poetry update

물론 스펙에 적힌 한도 내에서 최신 버전으로 업데이트하는 명령이다.

의존성 삭제하기

poetry remove PACKAGE_NAME

프로젝트 실행하기

poetry run python main.py

virtualenv 셸 얻기

poetry shell

poetry 업그레이드 하기

poetry self update

poetry 자체를 업그레이드 하는 명령이니 오해하지 말자.

Docker에서 사용하기

Docker 컨테이너는 독립된 환경이므로 딱히 virtualenv 환경을 사용할 이유가 없다.

poetry config virtualenvs.create false

위 커맨드는 virtualenv 를 비활성화 시키므로 Dockerfile 등에 poetry install 하기 전에 미리 동작하도록 넣어두면 유용하다.