기록하는삶
[Poetry/협업] 가상 환경 및 의존성 관리 도구 본문
지금까지 알고 있었던 패키지 관리 도구는 pip와 이를 활용한 requirement.txt 정도가 있었고, 가상 환경의 경우 anaconda를 활용하고 virtualenv 라는 게 있다더라, 정도를 알고 있는게 전부였다. 가상환경의 경우 문제가 생기면 폐기하고 새로 만들면 그만이었지만 pip를 활용해 여러 패키지를 설치하는 경우에는 버전 충돌이 종종 생기기도 하였고, 이를 해결하기 위해 시간을 버리는 경우도 많았다. 이러한 문제들을 방지하고 보다 효율적으로 가상환경 및 패키지 관리가 가능한 도구가 poetry라고 한다.
[설치 - 공식 홈페이지]
https://python-poetry.org/docs/#windows-powershell-install-instructions
OS에 맞게 설치하면 되는데, 윈도우를 사용하는 몇 가지 사소한 문제가 있었다. (해결 방법은 오류 해결 카테고리)
아래는 fastapi와 uvicorn을 포함하는 가상환경을 poetry를 통해 생성하고, 그 과정에서 poetry가 제공하는 기능을 살펴본 예이다.
1) poetry init
poetry init
프로젝트를 생성하면 pakage name, version, description, license, 호환 가능한 파이썬 버전을 지정할 수 있다. 마지막 파이썬 버전의 경우 나는 그냥 3.9를 사용했지만, ">=3.6.2,<3.10" 등으로 입력해 특정 범위 안의 버전이 사용되도록 할 수 있다.
다음으로 "Would you like to define your main dependencies interactively?"에 yes라 답하면 interactive하게 패키지를 설치할 수 있다. 아래는 fastapi를 검색하고 원하는 0번을 목록에 추가한 예이다. 버전을 직접 지정할 수도 있고, 따로 지정하지 않는 경우는 가장 최신의 버전을 알아서 선택해준다.
더 추가하고 싶은 패키지가 있다면 검색해 추가하고, 없다면 빈 칸인 상태에서 엔터를 누르면 된다.
위처럼 개발용 dependency와 프로덕션용(main) dependency를 구분할 수 있다는 것도 poetry의 장점 중 하나다. init을 완료하면 pyproject.toml 파일이 생성되고, 그 내용을 확인해보면 init에서 설정한 내용들이 들어가 있음을 확인할 수 있다.
2) poetry shell / poetry install / poetry add
poetry shell
poetry로 방금 만든 가상환경을 사용하는 shell을 활성화한다.
poetry install
마치 "pip install -r requirements.txt" 명령어와 유사하게 지정해놓은 패키지를 모두 다운 받을 수 있다.
poetry add uvicorn==0.15.0
위처럼 추가하고 싶은 패키지가 있다면 추가할 수 있으며,
이처럼 poetry.lock 파일이 생성된 것을 볼 수 있는데, 이는 pyproject.toml에 명시된 패키지들을 설치할 때, 특정 패키지의 하위 패키지이거나 버전이 따로 기록되지 않아 최신의 버전을 받은 경우에도 추후의 사용자가 동일한 의존성을 가질 수 있도록 하기 위해 pyproject.toml가 업데이트 되는 시점마다 생성되는 파일로, github에 커밋하는 것을 규칙화하면 늘 모두가 동일한 의존성을 유지할 수 있다는 장점이 있다.
'AI > 개발환경' 카테고리의 다른 글
[협업/MLOps] 머신러닝 실험, 배포를 위한 오픈소스 MLflow (0) | 2022.02.22 |
---|---|
Unix 표준 스트림, Redirection & Pipe, 서버에서 자주 사용하는 쉘 커맨드(Shell Command) (0) | 2022.02.17 |
윈도우(Window) pycocotools 설치, pip install pycocotools (0) | 2022.02.15 |
[협업/MLOps] Weights & Biases (0) | 2022.01.26 |
[Jupyter notebook/주피터 노트북] 알아두면 유용한, 주피터 노트북 단축키 (0) | 2022.01.17 |