[Python] 윈도우에서 poetry 설치하기

pikamon·2024년 6월 12일
0

Python

목록 보기
2/2

1. poetry란?

poetry란 Python 프로젝트에서 필요로하는 패키지들을 종속성에 따라 자동으로 설치/삭제할 수 있도록 도와주는 가상 환경 구축용 도구이다.

기존의 pip를 이용하면 어떤 Python 프로젝트에서 필요한 패키지들을 PC 전역에 설치하고 삭제하지만, poetry를 이용하면 Python 프로젝트와 프로젝트 안에서 필요한 패키지들이 함께 원자적으로 관리되기 때문에, 관련된 패키지들을 수월하게 관리할 수 있는 장점이 있다.

가끔 필요한 패키지가 있어 pip로 설치했다가 까먹고 제때 안지우면 어느샌가 패키지가 이따만큼 쌓여있는 걸 볼 수 있다. 이 때 용량은 (물론 크진 않겠지만) 용량대로 차지하고, 현재 뭐가 필요하고 불필요한지를 선별해서 삭제하기 매우 번거로워진다. poetry를 사용하면 패키지가 프로젝트와 함께 관리되기 때문에 PC를 클린하게 사용할 수 있으며, 필요한 패키지를 타인에게 가이드하기도 수월해진다. 또 전역 패키지와의 충돌을 막을 수 있는 장점도 있다.

poetry는 종종 pyenv와 함께 사용되기도 하는데, 이 때는 pyenv를 먼저 설치하는 것을 권장한다. 아래 글에서 pyenv 설치 방법을 확인할 수 있다.
https://velog.io/@pikamon/Python-3

2. poetry 설치하기

아래 poetry 공식 홈페이지의 설치 매뉴얼 페이지에 들어간다.
https://python-poetry.org/docs/#installing-with-the-official-installer

스크롤을 내리면 Install Poetry 에서 Windows (Powershell) 부분에 아래와 같이 명령어가 나와있다.

PowerShell을 열어서 해당 명령어를 입력하면 설치된다.

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

※ 주의. 만약 py - 실행 시 아래와 같이 py : 'py' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 라고 에러가 발생한다면,

The term 'py' is not recognized as the name of a cmdlet, function, script file, or operable program.

pypython로 바꿔서 다시 실행하면 설치가 된다.

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

위와 같이 정상 설치되면, poetry 바이너리를 환경 변수에 추가하라는 문구가 뜬다. 그러면 내 PC 우클릭 > 속성 > 고급 시스템 설정 > 고급 > 환경 변수 에 들어가서 사용자 환경 변수에 아래 경로를 추가해준다.

%appdata%\Python\Scripts

추가하고 쉘을 껐다 켠 후 아래 명령어를 입력한다.

poetry

입력 시 poetry에서 사용할 수 있는 명령어들이 출력되는데, 아래와 같이 출력되면 정상 설치된 것이다.

3. poetry 간단 사용법

간단히 사용하기 위한 명령어는 아래와 같다.

  1. poetry 프로젝트 생성하기
    poetry new / poetry init
  2. 종속성 패키지 자동 설치하기
    poetry install
  3. 패키지 설치하기 / 패키지 삭제하기
    poetry add / poetry remove
  4. 현재 설치된 패키지 조회하기
    poetry show
  5. 종속성 패키지 버전 업그레이드하기
    poetry update

3-1. poetry new / poetry init

3-1-1. poetry new

poetry new는 poetry를 사용하는 신규 프로젝트를 생성하는 명령어이다.

예를 들어 test-poetry 라는 이름으로 신규 poetry 프로젝트를 생성하고자 할 때, 아래의 명령어를 입력한다.

poetry new test-poetry

그러면 아래와 같이 test-poetry 라는 이름의 폴더가 생성되며, 안에 들어가면 pyproject.toml을 비롯한 파일과 폴더들이 자동으로 생성된 것을 볼 수 있다.

3-1-2. poetry init

임의의 경로에서 poetry init을 입력하면 해당 경로를 poetry 프로젝트로 초기화할 수 있다.

cd test-poetry
poetry init

위 명령어를 입력하면 초기화를 위한 작업이 대화형으로 진행되는데, 내용을 적절히 기입하면 경로 내에 pyproject.toml 파일이 생성되는 것을 볼 수 있다.

3-2. poetry install

프로젝트 내에 pyproject.toml 파일이 있다면, poetry install을 통해 해당 프로젝트에서 필요로 하는 패키지들을 자동으로 설치할 수 있다.

poetry install

위 명령어를 실행하면 경로 내에 poetry.lock 파일이 생성되는 것을 볼 수 있다.

poetry.lock 파일은 프로젝트 내 패키지 의존성과 패키지들의 버전 정보를 고정하는 역할을 한다. 이 파일을 통해 어느 PC에서도 동일한 버전의 패키지 환경을 구성할 수 있게 된다.

3-3. poetry add / poetry remove

3-3-1. poetry add

poetry add를 통해 프로젝트에서 사용할 패키지를 설치할 수 있다.

패키지 설치 명령어가 pip는 install인데 비해 poetry는 add를 사용하는데, 처음에 사용할 때 매우 헷갈릴 수 있으니 주의한다.

requests가 필요하여 아래 명령어를 입력하여 설치한다고 해보자.

poetry add requests

입력 시 아래와 같이 request 패키지가 설치되는 것을 볼 수 있다.

pyproject.toml 파일과 poetry.lock 파일을 열어보면 requests와 필요한 종속성들에 대한 정보가 들어있는 것을 볼 수 있다.

덧붙여 특정 버전의 패키지를 설치하는 것도 가능하다.

옛날 버전의 requests를 설치하려면 아래와 같이 입력한다.

poetry add requests==2.23.0

그러면 해당 버전의 패키지가 설치된 것을 볼 수 있다.

3-3-2. poetry remove

실수로 패키지를 잘못 설치했거나 더 이상 필요 없어졌을 경우 poetry remove를 이용하여 삭제할 수 있다.

방금 설치한 requests가 갑자기 필요없어졌다고 해보자.

poetry remove requests

위 명령어를 입력하면 requests와 필요한 종속성들이 함께 삭제되는 것을 볼 수 있다.

다시 pyproject.toml 파일과 poetry.lock 파일을 열어보면 관련 내용들이 없어진 것을 볼 수 있다.

3-4. poetry show

현재 프로젝트에 설치된 패키지를 조회할 때 사용한다.

poetry show

requests를 다시 설치한 후 위 명령어 입력 시 아래와 같이 설치된 패키지와 종속성을 확인할 수 있다.

3-5. poetry update

패키지들의 버전을 최신으로 업그레이드할 때 사용한다.

현재 옛날 버전의 requests(2.23.0)가 설치되어 있다고 할 때, 아래 명령을 입력한다.

poetry update

그러면 아래와 같이 설치된 패키지와 종속성이 최신으로 업그레이드된다.

※ 주의. 만약 패키지 설치 시, 아래와 같이 특정 버전이나 범위를 명시하여 설치했을 경우에는 poetry update를 하여도 최신으로 업데이트되지 않는다.

poetry add requests==2.23.0
poetry add requests>=2.0.0,3.0.0

버전을 명시하지 않은 경우에만 pyproject.toml 파일 내 패키지 버전 앞에 ^ 기호가 붙는데, 이게 있어야 명령어 입력 시 패키지가 업그레이드된다. 만약 없다면 패키지 버전을 보존하기 위해 업그레이드를 하지 않는다.

4. 결론

poetry는 pyenv보다도 제공되는 기능이 훨씬 많은 것 같으니, 필요 시 찾아서 쓰면 좋을 것 같다.

항상 그렇듯 툴은 사용법보다 설치하는 게 더 어려운 것 같다.

profile
개발자입니당 *^^* 깃허브 https://github.com/pikamonvvs

0개의 댓글