본문 바로가기
Language/Python

[Python] Module dependcy 새로운 관리 툴 Poetry | LIM

by forestlim 2022. 12. 17.
728x90
반응형

1. Poetry 도입이유
2. Poetry 란
3. Poetry 설치 및 사용
4. Pycharm에서 Poetry 환경 구축
5. Docker 를 이용한 Poetry 개발 환경 세팅
6. Poetry 추가 옵션

👩‍💻 Poetry 도입 이유

회사 내에서 여러 프로젝트를 관리하다 보니 파이썬 라이브러리들의 버전때문에 문제가 생기는 경우가 꽤 있었다. 

특히 tensorflow, keras, numpy 이 친구들..

또한, 테스트하려고 깔아놓은 라이브러리들 관리가 안되어 굳이 사용하지도 않는 라이브러리들도 같이 개발 및 운영환경에 올라가기 일쑤였다. 이러한 문제를 해결해줄 수 있는게 파이썬 신생 의존성 관리자 Poetry 였다. 실제로 써보니 좋은 점이 꽤 많았다.  

 

🧐 Poetry 란

Poetry 는 Pipenv 와 비슷한 기능을 제공하는, pip 와 virtualenv 를 동시에 사용할 수 있게 해주는 패키지 관리자이자 의존성 관리자다. 

pipenv 와 poetry 모두 사용성이 좋고 기존의 원시적인 의존성 관리를 벗어나게 해주어 둘 중 하나를 이용하면 좋을 것 같다.

 

예를 들어 requests 라는 라이브러리를 설치하면 다음과 같이 package에 대한 정보 및 하위에 어떤 package 에 의존(package.dependencies) 하고 있는 지를 보여준다. 

 

📝 Poetry 설치 및 사용

참고: https://python-poetry.org/docs/

 

Introduction | Documentation | Poetry - Python dependency management and packaging made easy

If you installed using the deprecated get-poetry.py script, you should use it to uninstall instead: curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 - --uninstall

python-poetry.org

 

설치는 Mac 에서 진행하였다. 설치는 매우 간단하다.

curl -sSL https://install.python-poetry.org | python3 -

 

버전 확인

poetry -V

 

버전관리를 하고 싶은 프로젝트에서 poetry 생성

poetry init

 

다음과 같이 입력하면 pyproject.toml 이 생성된다.

 

package 를 추가하고 싶은 경우 

poetry add {package name}

 

package 를 제거하고 싶은 경우

poetry remove {package name}

 

또한, 개발 환경에서 package 를 테스트해보고 사용해보고 싶을 경우 옵션을 주어서 따로 관리할 수 있다. 

poetry add --group dev {package name} / poetry remove --group dev {package name}

 

이런식으로 분리되어서 관리되게 된다. 

 

추후, dev 및 개발 환경은 제거하고 main 환경만 설치하고 싶은 경우에 이렇게 하면 된다. 

poetry install --only main

 

📝 Pycharm에서 poetry 환경 구축

pycharm에서 python interpreter 에 poetry 가 추가되었다. 혹시나 없을 경우 plugin에서 설치하면 된다.

그 전에 poetry venv 환경이 현재 작업하고 있는 프로젝트에 적용되면 좋을 것 같았다. 

 

poetry 사용 시 따로 가상환경 위치를 설정하지 않으면 다음의 위치로 들어가게 된다. 

$HOME/Library/Caches/pypoetry/virtualenvs

 

poetry venv 환경을 현재 작업하고 있는 프로젝트에 위치시키려면 다음과 같이 입력하면 된다. 

poetry config virtualenvs.in-project true

이후 poetry init 후 세팅 후 poetry add 를 통해 package 를 add 하면 .venv 폴더로 현재 프로젝트에 생성된다. 

그 다음 pycharm에서 interpreter 설정을 .venv 폴더 내부에 python으로 하면 된다. 

 

📝 Docker 를 이용한 Poetry 개발 환경 세팅

ENV POETRY_HOME="/opt/poetry"
ENV PATH="$POETRY_HOME/bin:$PATH"
RUN curl -sSL https://install.python-poetry.org | python3 -
RUN poetry config virtualenvs.create false

RUN poetry install --no-root

Docker 컨테이너는 독립된 환경이므로 딱히 virtualenv 환경을 사용할 이유가 없기 때문에 따로 virtualenv 환경은 만들지 않아야 한다. 

RUN poetry config virtualenvs.create false

 

📝 Poetry 추가 옵션

이 옵션을 통해 설치한 package 에 대한 package 정보를 바로 확인할 수 있다. 

poetry show {package name}

 

이 옵션을 통해 설치한 package 들에 대한 의존성을 tree 구조로 확인할 수 있다. 

poetry show --tree

728x90
반응형

댓글