본문 바로가기

just-coding-it

python패키지 관리를 poetry로 해보자

지금까지는 pip을 사용해서 python패키지 관리를해왔다. 그 과정에서 불편했던 점들이 있었고 그런 문제를 해결할 수 있었던 npm같은 패키지 관리툴이 부러웠다.

 

  1. 기존에는 다운로드했던 패키지들을 pip freeze > requirements.txt로 export한 후에 다른 작업공간에서 pip install -r requirements.txt로 불러들였다. 혹시라도 pip install로 설치해놓고 깜박해서 pip freeze를 해두지 않으면 문제가 생길수밖에 없는 구조이다.
  2. 또 기존에는 pip install을 통해 새로 패키지를 추가할때마다 기존 패키지의 버전을 보장할수 없었다. 예를들어 어떤 패키지가 requests<=2.26 이라는 의존성을 갖고 있다고 하자. 그런데 해당 패키지 설치 이후에 pip install requests==2.32를 하더라도 문제없이 설치가된다. 이렇게 해놓고 pip freeze 한 후 다른 작업공간에서 pip install -r requirements.txt하면 종속성 문제가 발생해버린다.
  3. 그리고 기존 방법으로는 개발환경에서만 설치하는 패키지를 분리할수 없었다. black, mypy 등은 개발환경에서만 사용하고 배포할때는 필요하지 않은데 requirements.txt는 이를 구분하지 못한다. 그래서 dependecies와 devDependencies를 구분해주는 package.json이 부러웠다.

poetry를 사용하면 이를 모두 해결할수 있다. python공식 패키지 관리툴은 아니라서 따로 설치해줘야한다.

https://github.com/python-poetry/install.python-poetry.org

 

GitHub - python-poetry/install.python-poetry.org: The official Poetry installation script

The official Poetry installation script. Contribute to python-poetry/install.python-poetry.org development by creating an account on GitHub.

github.com

여길 참고하면 어떻게 설치해야 하는지 가이드가 나와있다.

설치를 완료하고 환경변수를 등록해준다. poetry --version으로 잘 실행되는지 확인해보면 된다.

 

주요 명령어로는 아래와 같다.

  • poetry init: 작업공간 초기화 npm init과 같다고 보면된다.
  • poetry shell: 가상환경 진입
  • poetry add [package]: 패키지 추가 및 설치
  • poetry remove [package]: 패키지 제거
  • poetry install: poetry.lock에 적혀있는 패키지 모두 설치