패키지 관리자
이자 의존성 관리자
패키지 관리자
: 사용자가 설치하고자 하는 패키지를 저장소에서 찾아 다운로드 하고 설치하는 역할의존성 관리자
: 하나의 패키지가 요구하는 다른 패키지들을 올라가며 설치해야 할 패키지의 목록을 구성하고 의존성을 지켜주는 일의존성이란?
- 코드에서 두 모듈간의 연결을 의미하며, 하나의 모듈이 바뀌면 의존하고 있는 다른 모듈까지 변경이 이루어져 수정이 필요하게 된다는 것을 의미
- 의존성 관리자가 내가 사용하고 있는 모듈의 의존성을 자동으로 체크하여 일괄적으로 처리하게 된다면, API가 최신인지 확인하고 버그가 없는지 등을 사전에 예방할 수 있음
pip
도 python의 패키지 관리자
이자 의존성 관리자
poetry
를 사용해야 할까?pip install 패키지명
명령어를 통해 특정 패키지를 설치하고자 할 때, 해당 패키지 설치를 위해 다른 여러가지 패키지 설치가 요구되는 경우가 있음.
A
,B
,C
세 개의 패키지가 있음.A
의 v2.0 설치를 위해B
의 v1.5,C
의 v1.8 설치가 요구됨.
- 이때 pip는
B
의 v1.5를 설치함.- 그런데
C
의 v1.8은B
의 v2.0 이상을 요구로 함.- 그러나 이미 우리는
B
의 v1.5를 설치한 상황
→ Dependency Resolving에 실패함
pip
에는 프로젝트가 의존하고 있는 라이브러리 관리를 위한 lock 파일이 없으며, requirements.txt
를 수동으로 생성 및 업데이트해야 함.pip freeze > requirements.txt
requirements.txt
를 작성해도 패키지 버전은 결정적이지 못하고, 실수하는 순간 개발 환경에서 잘 돌던 코드가 배포시 작동하지 않는 일을 겪을수도 있음.pip
는 항상 전역에 모든 패키지를 설치하기 때문에, X
프로젝트에서 특정 패키지
의 v1.0을 설치해서 사용하고 있다가 Y
프로젝트에서 <v1.1을 설치하면 덮어 씌워져 버리는 문제가 발생.virtualenv
라는 가상환경 관리 패키지를 설치하여 프로젝트별로 환경을 분리할 수 있지만, pip
와 별도로 관리하는 것이 불편함.A
, B
, C
의 패키지 사례로 설명하자면, pip
로 설치 시에는 위와 같이 A
v2.0, B
v1.5, C
v1.8 로 설치하더라도 아무런 문제가 발생하지 않음poetry
는 버전 관련 정보를 확인하고 특정 버전 이상이 아닐 경우 아예 설치가 되지 않음.poetry
는 poetry.lock
이라는 lock파일을 생성pyproject.toml
(requirement.txt
와 같이 설치한 패키지를 listing 해놓은 파일)을 자동 생성 및 업데이트poetry
는 가상환경 여부를 확인하고 기존 환경, 혹은 신규 생성 후 설치 등의 자동 관리를 지원pip
와 virtualenv
의 역할을 혼자서 다 함Poetry를 사용하여 가상환경 만들기
파이썬 의존성 관리자 Poetry 사용기
poetry를 사용해 패키지 관리하기 (feat. pip)
Poetry로 파이썬 의존성 관리하기
파이썬의 새로운 의존성 관리자 Poetry
파이썬 패키지 관리툴 poetry 소개
나의 파이썬 환경 구축기 1 - 써본 것들에 대한 생각