Poetry을 통한 의존성 관리하기
이번에는 파이썬에서 사용하는 의존성 관리 중에 하나인 Poetry에 대해서 알아보고자 한다.
Poetry을 왜 사용하나?
Poetry는 다음과 같은 이점들을 제공한다.
- 의존성 해결 : 예를 들어 패키지 1, 패키지 2가 있을 때, 패키지 2가 패키지 1의 2.0 이상의 버전을 요구할 경우 pip에서는 패키지 1을 1.0 버전으로 설치해도 아무런 문제가 없지만 poetry에서는 특정 버전 이상이 아닐 경우 설치가 되지 않는다.
- 의존성 잠금 : pip는 lock파일이 없고, 직접 requirements.txt을 작성해야하지만, poetry는 lock 파일과 pyproject.toml(requirements.txt처럼 설치한 패키지를 리스팅 해놓은 파일)을 자동으로 생성하고 업데이트한다.
- 가상환경 : pip는 전역에 패키지를 설치하기에 다른 환경에서의 버전 관리가 불가능하여 아나콘다나 virtualenv 같은 툴이 부가적으로 필요하지만 poetry는 가상환경 여부를 확인하고 기존 환경 또는 새로 만들어 설치하는 등의 자동 관리가 가능하다.
Poetry 설치 및 사용
맥에서는 아래 명령어를 통해 설치한다.
brew install poetry
리눅스 및 윈도우 에서는 아래 명령어를 통해 설치한다.
$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py
Poetry을 생성하는 방법은 다음과 같다.
poetry init
pyproject.toml 파일은 프로젝트에 대한 중요한 정보들을 가지고 있는데 간단한 프로젝트의 정보부터 사용하는 파이썬 버전과 사용하는 의존성에 대한 정보 모두를 가지고 있다.
- pyproject.toml
[tool.poetry]
name = "poetry-demo"
version = "0.1.0"
description = ""
authors = ["JHeaon <j3heawon@gmail.com>"]
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.12"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
자주 사용하는 명령어
- add : poetry을 통해 의존성을 추가하기 위해서는 직접 명시하는 방법과 add 명령어를 통해 추가할 수 있다.
poetry add django
- shell : 가상환경을 생성하고 실행하는 명령어이다. poetry.toml에 해당하는 파이썬 가상환경이 생성 및 실행된다. 만약 해당 가상환경이 제대로 실행되지 않는다면. [poetry 가상환경 경로]/bin/activate 명령어로 가상환경을 켜준다.
만약 가상환경에서 벗어나고 싶다면 활성화된 쉘에서 exit() 명령어로 나올 수 있다.
poetry shell
- install : 현재 프로젝트의 poetry.toml 파일을 읽어서 의존성 패키지를 설치하는 명령어이다. 이때 peotry.lock이 없을 경우 해당 파일을 제작하여 활용하고, 이미 존재할 겨울에는 poetry.lock 파일을 활용한다. poetry.lock파일은 협업 시 의존성을 고려한 개발 환경 공유에 크나큰 도움을 준다.
poetry install
- update : 의존성 패키지를 update 하고, poetry.lock파일 또한 update 한다.
peotry update
- poetry remove : 특정 패키지를 삭제한다.
poetry remove