CS 공부/AI

파이썬 버전 관리

imsmile2000 2023. 4. 25. 17:09

버전과 버저닝

  • 버전: 소프트웨어 제품의 특정 release에 대한 고유한 식별자, 지속적으로 개발, 릴리즈 하는 경우 필요
  • 버저닝: 소프트웨어의 Unique한 버전 이름, 버전 번호를 할당하는 과정

버저닝 방법

  • CalVer(Calender Versioning)
    • 날짜 기반 시스템을 사용해 버전 번호를 할당 (연도와 월)
    • 이해하기 쉬우며, 출시 시기를 예측하기 수월
    • ex. Ubuntu 20.04
  • SemVer(Semantic Versioning)
    • 마침표로 구분된 주 번호, 부 번호, 패치 번호로 구성
    • 이전 버전과 호환되지 않은 변경이 있는 경우 주 번호가 증가
    • 이전 버전과 호환되며 새로운 기능이 추가되면 부 번호 증가
    • 이전 버전의 버그 수정이 진행되면 패치 번호가 증가
    • ex. Python 3(주).11(부).0(패치)
  • HashVer(Hash Versioning)
    • 해시 알고리즘을 사용해 버전에 대해 고유한 식별자 생성
    • 코드가 변경될 때마다 해시가 변경되므로 모든 버전이 고유한 식별자 가짐
    • ex. Git commit 7e6d3fd

파이썬 3.11 설치

  1. Docker로 파이썬 3.11.0 이미지 설치: docker pull python
  2. 패키지 관리자(brew,apt,winget)로 설치
  3. pyenv install 3.11.0, CLI로 설치 (추천)

출처: NAVER connect foundation

가상환경

  • venv: python -m venv "가상환경 폴더 경로", source "경로"/bin/activate
  • conda
  • pyenv-virtualenv
  • pipenv

패키지 매니저

  • 패키지를 설치하고, 버전을 관리하는 것
  • 파이썬 패키지 매니저 : pip, poetry, conda
  • pip의 문제점
    • 개발 환경과 배포 환경의 패키지가 분리되지 않음
    • pip list로는 패키지간 의존성을 알 수 없음
    • pip uninstall 시 의존성이 있던 패키지들은 삭제되지 않음
    • 즉, pip로는 정교하게 패키지 관리를 할 수 없음
  • pip의 문제를 해결하기 위해 poetry가 등장
    • 파이썬 프로젝트에 대한 버저닝을 파일 내에서 할 수 있음
    • 개발, 운영 환경 구분하여 패키지 설치 가능
    • 설치한 패키지와 간접적으로 설치된 패키지들간의 의존성 볼 수 있음
    • 특정 패키지 삭제 시 의존성 패키지 삭제 가능