패키지 의존성 관리
Module < Package < Library
- Module : 파이썬으로 정의된 파일 / 실행 가능한 파이썬 파일
- Package : 모듈의 집합(.모듈이름)
- Library : 사용할만한 모듈 패키지를 만들어 놓은 것
- (Python Standard Library(표준 라이브러리), Python Package Index(PyPI))
pip : Python Package Installer
npm, yarn : 자바스크립트의 패키지 관리자(Python의 pip와 비슷)
(package.json, package-lock.json → Node_modules)
pip install Package : 패키지 설치
pip install Package==1.0.4 : 특정 버전의 패키지 설치
pip search Package : 패키지 검색
pip uninstall Package : 패키지 삭제
>>> dependencies까지 삭제되지 않는다
# 기존 방식
pip freeze : 설치된 패키지 목록(pip list)
>>> pip freeze > requirements.txt
>>> pip install -r requirements.txt : 가상환경 생성/실행 후
>>> requirements-dev.txt : 개발(테스트)용으로 따로 만든다
의존성 관리
외부 라이브러리 관리
- 어떤 버전의 어떤 패키지가 쓰였는지 / 쓰일 수 있는지
pip requirements 방식의 문제점
- 이원화되지 않은 개발용/배포용 패키지
- 의존관계 파악 어려움 : 패키지 tracking 어려움, uninstall로 dependencies까지 삭제되지 않음
- 기존 설치 패키지와 상충되거나 설치 불가능 환경에서는 설치가 안 됨
>>> 항상 동일한 패키지 설치를 보장하기 위해 패키지 관리자와 가상환경이 동일해야 함
더 나은 패키지 의존성을 관리하기 위한 도구
- pip-tools : pip-compile, pip-sync
- 패키지 설치 기능 X (pip)
- 가상환경 필요 (venv)
- 파이썬 버전 분리 (pyvenv)
- 의존성이 주석으로 나오지만 의존관계가 한 눈에 안 들어옴 (pipdeptree 의존성 그래프)
- pipenv
- poetry
pipenv
Pipfile, Pipfile.lock으로 자체적으로 생성한 가상환경에서 패키지 의존성 관리를 한다
패키지 설치, 가상환경, 의존성 관리를 한 번에!
pipenv install django
>>> 명령시 lock 파일 자동 업데이트로 똑같은 패키지가 설치되도록 보장해준다
pipenv install --dev django-debug-toolbar : 개발용 패키지 설치
>>> Locking [dev-packages] dependencies...
>>> Locking [packages] dependencies...
pipenv graph : 패키지 의존관계를 그래프로 한 눈에 볼 수 있음
pipenv run python <module> : 파이썬 실행
pipenv lock : lock 파일 생성, 업데이트
pipenv --python 3.7 : 3.7버전 파이썬을 사용하는 가상환경 생성
기존 문제의 해결. but, 너무 늦은 Release 주기?
는 2023.04.20 👇
https://pipenv.pypa.io/en/latest/changelog/
poetry
poetry init : pyproject.toml(의존성 관리 문서) 생성(pipenv 에서 Pipfile과 비슷)
poetry install : 가상환경과 Poetry.lock 파일 생성
poetry shell : 가상환경 실행
>>> 프롬프트가 달라짐
poetry add django : 장고 설치(패키지 관리 가능)
poetry add --dev django-debug-toolbar : 개발용 패키지 설치
>>> lock 파일 업데이트
poetry search keras : 패키지 검색 가능(pip, poetry 가능 / pip-tools, pipenv 불가능) - 파이썬 대패키지시대
poetry show / show --tree : 패키지 설명과 의존성을 보여줌
# 프로젝트 필수 파일과 디렉터리 구성까지 세팅해주고 배포까지 가능
poetry new : python project kickstart
poetry build
poetry publish
pipenv vs poetry
https://www.youtube.com/watch?v=y2kqs4d-Wf0&t=840s
'Python > 수업' 카테고리의 다른 글
itertools, collections (2) | 2023.05.29 |
---|---|
객체지향(Object Oriented Programming) 특강 (1) | 2023.04.28 |
파이썬의 코루틴 (2) | 2023.04.23 |
프로세스와 스레드 (2) | 2023.04.16 |
타입별 메서드의 종류 (0) | 2023.04.16 |