2 분 소요

Poetry가 무엇인가요? 프로젝트 빌더와 패키징 솔루션이 모두 하나로 포장된 것입니다.
Python에서 종속성 관리와 복잡성을 단순화 합니다.

Poetry

개요

Poetry는 Python의 종속성 관리패키징을 위한 도구입니다.
이를 통해 프로젝트가 의존하는 라이브러리를 선언할 수 있으며 이를 관리(설치/업데이트) 합니다.
Poetry는 반복 가능한 설치를 보장하기 위해 잠금 파일을 제공하고 배포용 프로젝트를 구축할 수 있습니다.

기존에 pyenv나 virtualenv를 잘 사용하고 있는 사용자라면 조금 생소해보일 수 있는 패키지 관리도구일 것 같다.

Poetry는 virtualenv를 기반으로 하는 툴이기 때문에
의존성 관리만을 목적으로 사용한다면 virtualenv(conda 같은)를 사용하는 것이 훨씬 편할 수 있다.

하지만 만약 Build(빌드), Publish(배포) 까지 고려하고 있다면 Poetry는 최고의 선택이 될 수 있다.

설치

먼저 Poetry는 Python 3.8 이상이 필요합니다.
다중 플랫폼이며 목표는 Linux, macOS 및 Windows에서 동일하게 작동하도록 만드는 것입니다.

  • Mac, Linux, Windows(WSL) 에서는 다음과 같이 명령어를 입력하여 설치할 수 있다.
curl -sSL https://install.python-poetry.org | python3 -
  • Windows(powershell) 에서는 다음과 같이 명령어를 입력하여 설치할 수 있다.
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
  • 기본적으로 Poetry는 플랫폼 및 사용자별 디렉터리에 설치됩니다.
    • MacOS: ~/Library/Application Support/pypoetry
    • Linux/Unix: ~/.local/share/pypoetry
    • Windows: %APPDATA%\pypoetry
  • 설치가 완료되면 플랫폼별 디렉터리에 poetry wrapper를 생성됩니다.
    • Unix: $HOME/.local/bin
    • Windows: %APPDATA%\Python\Scripts
  • 만약 $PATH에 이 디렉터리가 존재하지 않으면 Poetry를 poetry로 호출하기 위해 추가해야 합니다.

여기까지 수행하였다면 이제 poetry 명령어를 사용할 수 있게 된다.


사용법

Poetry가 설치되고 $PATH에서 다음을 실행할 수 있습니다.

poetry --version

`Poetry (version 1.7.1)와 같은 내용이 표시되면 사용할 준비가 된 것입니다!

프로젝트 생성

$ poetry init

위 명령어를 입력하게 되면 명령어를 실행하는 현재 폴더에서 poetry 프로젝트 생성 절차가 진행된다.
절차를 마치면 사용자가 사용할 라이브러리 정보와 빌드 정보 등이 저장된 pyproject.toml가 생성된다.

Poetry Shell 활성화

$ poetry shell

poetry도 shell기반으로 되어 있기 때문에
poetry를 init한 폴더로 간 다음 위의 명령어를 입력하면
알아서 virtualenv를 만들어서 shell로 activate된다.

라이브러리(패키지) install

shell을 실행시켜 가상환경 진입에 성공하였다면
아래의 명령어를 입력하여 pyproject.toml에 저장된 내용에 기반해 라이브러리를 설치할 수 있다.

$ poetry install

Python 버전과의 의존성 오류가 발생하면 해결 방법을 자세히 설명해주기 때문에 그대로 따라가면 된다.
의존성 오류를 모두 잡았다면 라이브러리가 성공적으로 설치된다.

라이브러리(패키지) 추가

사용자가 poetry 환경에서 개발을 하다가 라이브러리나 패키지를 추가하고 싶은 것이 생긴다면
아래의 명령어를 입력해 라이브러리 또는 패키지를 추가할 수 있다.

$ poetry add [추가할 패키지(라이브러리) 명]

만약 pandas 패키지를 설치하고 싶다면 다음과 같이 명령어를 입력해주면 된다.

$ poetry add pandas

라이브러리(패키지) 삭제

사용자가 poetry 환경에서 개발을 하다가 라이브러리나 패키지를 삭제하고 싶은 것이 생긴다면
아래의 명령어를 입력해 라이브러리 또는 패키지를 삭제할 수 있다.

$ poetry remove [삭제할 패키지(라이브러리) 명]

다만 pyproject.toml 파일에 삭제하고자 하는 패키지가 명시되어 있어야 한다.

가상환경 내에서 파이썬 명령어 실행

보통 pip와 같은 명령어는 애초에 전역으로 설치되도록 설계되어 있어,
무작정 pip를 사용하게 되면 후에 poetry와 의존성 문제로 충돌할 가능성이 있다.

때문에 poetry에서는 가상환경 내에서 명령어가 실행될 수 있도록 ‘run’ 명령어를 지원해준다.

$ poetry run [명령어]

이 명령어를 아래와 같이 활용할 수 있다.

$ poetry run pip install transformers

poetry lock

poetry.lock 파일은 pyproject.toml과 동일한 의존성을 가지고 있다.

어떤 사람이 poetry 가상 환경에서 poetry.lock 파일을 가지고 있다면
poetry.lock 파일을 만든 사람의 프로젝트 의존성을 동일하게 따라가게 된다.

만약 같이 개발하는 동료가 있따면 github repo에 poetry.lock 파일을 추가하는 것을 권장한다.

poetry.lock가 있는 폴더에서 poetry install 명령어를 사용해 라이브러리를 설치할 경우
의존성을 고려하여 설치해주게된다.

poetry.lock은 사용자가 임의의 변경할 수 없으며
pyproject.toml 파일을 수정(생성)한 후 아래의 명령어를 입력하면 poetry.lock을 수정(생성)할 수 있다.

$ poetry lock

태그:

카테고리:

업데이트:

댓글남기기