패키지 의존성 관리
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/
Release and Version History — pipenv 2023.4.21.dev0 documentation
Remove usage of pipfile module in favour of Plette. pipfile is not actively maintained anymore. Plette is actively maintained, and has stricter checking of the Pipefile and Pipefile.lock. As a result, Pipefile with unnamed package indecies will fail to loc
pipenv.pypa.io
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 |