Python Package Manager Poetry

1. Poetry를 이용한 패키지 관리

개발을하면서 필요한 패키지를 설치하며 관리할때는 다른 사람들과 공유하거나 다른 컴퓨터에서 작업할때의 환경을 고려하지 않으면 안됩니다.

환경이 다르다고 패키지들이 서로 충돌하거나 한다면 다른 사람들과 공유하거나 다른 컴퓨터로 작업하기 쉽지 않습니다.

소스를 git으로 저장하게 되실텐데 이 경우 해당 git소스를 다른 컴퓨터에서 작업하거나 다른 작업자가 공유받아 작업하는데 코드를 보기전에 매번 환경설정으로 많은 시간을 투자하게 된다면 매우 지치게됩니다.

1) 패키지 관리자 pip와의 비교

패키지 관리자는 우리가 만든 프로젝트에서 필요한 도구(패키지)를 관리해주는 소프트웨어입니다. 대표적인 Python 패키지 관리자로는 pippoetry가 있습니다.

pip는 Python에서 패키지를 설치하고 관리하는 기본적인 도구이며, poetry는 pip보다 편리하게 사용하루 수 있게 도와주는 도구입니다. poetry는 패키지를 설치하는데 필요한 설정을 자동으로 해주는데 pyproject.toml 파일과 poetry.lock 파일을 이용하여 환경을 정의하고 정확한 버전의 패키지를 설치할 수 있도록 해줍니다.

즉, pip가 패키지를 설치하는 데 집중한 도구라면 poetry는 패키지 설치뿐만 아니라 프로젝트 환경 설정까지 관리하는 도구라고 할 수 있습니다.

Package Manager장점단점
pip기본으로 내장되어 별도 설정 불필요가상환경 별도관리, 종속성관리와 버전관리의 문제
poetrypip의 단점을 해결하고 가상환경까지 관리가 가능기본설정이 필요

2) 패키지 명령어와 가상환경

Package Manager명령어
pippip install 패키지명
poetrypoetry add 패키지명
Package Manager가상환경시작
pipvenv\Scripts\activate
poetrypoetry shell
Package Manager가상환경종료
pipdeactiavte
poetrydeactivate

pip는 앞에서 배운 venv 가상환경으로 구성하여 사용해주는게 좋습니다. 그게아니면 전역 파이썬환경으로 관리가 어려워집니다.

물론 poetry도 venv로 설정된 가상환경으로 구성해 해당 독립된 가상환경내에서 poetry의 가상환경을 사용하지 않고 패키지 관리 및 버전관리용도로만 사용하실수도 있고 가상환경 내의 가상환경으로도 사용가능합니다.

참고로 PyCharm에서 poetry의 poetry shell을 통한 가상환경 경로를 별도 설정해줘야 정상적으로 작동하고 visual studio code를 이용할때도 별도 설정이 필요합니다. 물론 PyCharm의 경우 재시작하면 pyproject.toml파일을 읽고 자동으로 설정합니다만 pip와 poetry에 대해 좀 더 공부하시고 사용하시면 좋습니다.

이는 개발환경에 대해 알맞는 선택을 하시는걸 추천드리고 저는 전역으로 poetry를 설치하고 각 프로젝트 폴더마다 poetry shell로 가상환경을 이용함을 추천합니다.

참고로 인터프리터를 설정된 상태에서 인터프리터가 가상환경을 인식하게되면 IDE가 프로젝트 실행시 자동으로 활성화해줘서 좋으나 추후 도커나 리눅스환경에서 사용할때 알고있으면 더욱 좋습니다.

3) poetry setting

구성된 환경에의 터미널에서 아래 명령어를 입력하여 현재 셋팅된 인터프리터(파이썬 설치 경로(전역) or 가상환경)내에 poetry를 설치해줍니다.

pip install poetry

그리고 프로젝트폴더를 생성할 위치에서 작업할 프로젝트를 아래 명령어를 이용하여 생성하거나

poetry new 프로젝트명

직접만든 폴더 구조를 이용하여 초기화를 해주셔도됩니다

poetry init
명령어차이점
poetry new 프로젝트명명령어 입력하는 경로아래에 poetry를 사용하는 환경의 폴더구조 생성
poetry init명령어를 입력하는 현재경로에 poetry환경 구성

4) poetry 사용

venv 환경등은 기본적으로 git에 올리지 않습니다. git에 올리고 받은 다음 해당 환경을 구축하기 위해선 아래 명령어를 이용해줍니다.

poetry install

명령어를 입력한 경로에 poetry를 이용하여 pyproject.toml에 추가되었던 패키지를 poetry.lock 파일의 정의된 버전으로 설치된 같은 환경으로 사용할수있게됩니다.

추가적인 의견

pyporject.toml에 대한 이해는 이정도로 해놓고 추후 리액트 프로젝트에서 pnpm을 사용하면서 배우게될 package.json파일과 pnpm-lock.yaml파일을 설명하면서 자세히 다루겠습니다.

2. Next

  • flet

Related Pages

© 2024 Coding Stairs. All rights reserved.