파이썬을 사용하다보면 이런저런 패키지를 설치해서 사용하게 되는데, 단순히 pip install packge 를 한다면 기본적으로 가장 최신 버전이 설치된다. 그러다보니 사용하는 패키지 종류가 많아질수록 패키지들 간의 버전문제가 일어날 가능성이 커진다.
이를 해결하기 위해 poetry 를 사용해보자.
poetry는 패키지들 관의 버전 의존성을 자동으로 관리해주는 툴이다.
이런 저런 설명은 api document에 적혀 있지만, 실제로 어떻게 사용하는지 예시가 더 이해하기에 쉽다고 생각해서 예제를 만들어봤다.
우선, poetry를 사용해서 새로운 프로젝트를 생성해보자
아무 환경에나 pip install poetry를 이용하여 poetry를 설치하고, 원하는 디렉토리로 이동한 뒤에 아래의 new 명령어를 사용하여 프로젝트를 생성한다.
(개인적으로 이 프로젝트에서 사용할 venv를 새로 생성하는것을 추천한다. 그 편이 덜 헷갈린다)
poetry new poetry_demo
그 결과 위와 같은 형태의 프로젝트가 생성된다.
생성된 직후 pyproject.toml을 확인해보자.
pyproject.toml은 PEP-518에서 dependency를 관리하기 위해 생긴 파일이다.
아직은 패키지가 없기 떄문에 python 버전에 대한 정보만 가지고 있다.
첫번째로 사용할 패키지를 추가해보자.
poetry add scikit-learn
아래 터미널을 보면, scikit-learn 에 필요한 다른 패키지들을 버전에 맞게 같이 설치해주고, pyproject.toml 에 설치된 scikit-learn의 버전 정보도 추가된다.
이번엔 의도적으로 패키지간의 버전 충돌을 만들어보자.
가끔 사용하는 패키지인 sklego를 add해보겠다.
poetry add sklego
우선 sklego에서 필요한 패키지를 사용하려고 시도한다.
그중, llvmlit 버전이 PEP-517을 지원하지 않는다고 경고가 나왔다. 여러 의존성을 가지고 있는 패키지들의 버전이 맞지 않아 이런 경고가 계속해서 나타난다. 이때 문제가 생기는 모든 poetry add 를 이용하여 poetry에서 의존성을 확인하게 추가해준 뒤에 다시 sklego를 add 해보자.
진행하다 보면, numpy는 1.25.1이상아 지정되고, numba는 1.25아래 버전만 지원해서 에러가 난다.
이미 지정된 numpy 버전을 1.24로 바꿔보자
poetry add numpy==1.24
바꾼뒤 numba를 다시 추가해주고, 마지막으로 원래 목표였던 sklego를 add 해주자.
최종적으로 위처럼 버전이 맞춰진 환경을 구성할 수 있다.
이처럼 poetry는 이후에 다른 패키지를 설치할때도 버전 관리에 대한 스트레스를 훨씬 줄일 수 있는 tool이다.
add 만을 사용하여 아주 간단한 사용 예시지만, 이 예시는 실제로 제대로 관리 하지 않던 가상환경을 재설치 할때마다 겪었던 문제였기 때문에 다양한 상황에 유용할 것이라고 생각된다.
'Python 관련 정보 > Library 소개' 카테고리의 다른 글
streamlit : 빠르고 쉽게 데이터 웹 앱을 만들고 배포하는 방법 (0) | 2024.05.14 |
---|---|
googletrans - 무료 구글 번역기 라이브러리 (0) | 2023.07.08 |