파이썬 버전 관리

홍찬우·2023년 7월 24일
0
post-custom-banner

버전과 버저닝

버전

SW 제품의 특정 릴리스에 대한 고유 식별자

SW가 처음 출시되었을 때 혹은 업데이트가 이루어질 때마다 새로운 버전 번호 부여


버저닝

버전 번호를 할당하는 과정

방법

  • CalVer (Calendar Versioning)

    • 날짜 기반 시스템을 사용해 버전 번호 할당

    • 연도와 월로 구성

    • e.g., Ubuntu 20.04 (20년도 4월)

  • SemVer (Semantic Versioning)

    • 주 번호 + 부 번호 + 패치 번호로 구성

    • 이전 버전과 호환되지 않은 변경이 있으면 주 번호 증가

    • e.g., Python 3.11.0

  • HashVer (Hash Versioning)

    • SHA-1, SHA-256 hash 알고리즘을 사용해 버전에 대해 고유 식별자 생성

    • 코드가 변경될 때마다 해시가 변경되므로 모든 버전이 고유 식별자를 갖도록 보장

    • e.g., Git commit 7e6d3fd


코드의 특정 상태를 적당히 표현하는 것이 버저닝의 핵심

필요한 상황

  • 팀 내 협업하는 상황

  • Project Manager와 프로젝트 로드맵 계획 회의를 하는 경우

  • 사용자에게 앱스토어 릴리스 내용 공지할 때 등



버전이 필요한 이유

한 번 릴리스하고 끝나면 버전이 굳이 필요 없음

  • 기억해야 할 특정 상태가 오직 하나

지속적으로 개발, 릴리스하는 경우 버전 필요

  • 기억해야 할 특정 상태가 여러 개



파이썬 버전 관리

파이썬의 버저닝

SemVer을 사용해 버저닝

파이썬 3.x 버전은 2.x 버전에 호환되지 않음

  • e.g., Python2는 print ‘hi’, Python3은 print(’hi’)

파이썬 버전 표현 방법

  • 파이썬 버전은 보통 프로젝트의 github README.md에 작성


파이썬 3.11 설치하기

  1. 파이썬 공식 홈페이지에서 파일을 다운받아 설치

  2. conda로 설치

    • conda install python=3.11.0
  3. Docker로 파이썬 이미지 설치

    • docker pull python:3.11.0
  4. 패키치 관리자로 설치

  5. pyenv로 설치

    • pyenv install 3.11.0

파이썬 설치 시 여러 방법을 섞어쓰면 충돌이 날 가능성이 존재

  • conda와 pyenv를 같이 설치하여 사용하는 경우

  • conda는 데이터 사이언스를 위한 라이브러리가 모두 설치되어 있어 무겁기 때문에 miniconda를 사용하기도 함


pyenv 설치

  • 설치 후 pyenv install 3.11.0 명령어로 python 3.11.0 설치

  • pyenv shell 3.11.0 명령어로 현재 shell에 파이썬 버전 활성화

  • pyenv 설치를 지향




파이썬 프로젝트 버전 관리

가상 환경

가상 환경이 없다면?

  • 프로젝트 한 개만 할 때는 큰 이슈가 되지 않음

  • 여러 프로젝트를 할 땐 이슈가 될 수 있음

  • 프로젝트 별로 각자 환경을 갖도록 함


가상 환경을 만드는 방법

  • venv

  • conda

  • pyenv-virtualenv

  • pipenv



venv

가상 환경 구축에 가장 많이 사용되는 방법

python -m venv “가상 환경 폴더를 만들 경로”

  • 보통 프로젝트 최상위 경로에서 .venv로 만드는 것이 관습

  • source .venv/bin/activate 로 활성화


venv 구조

  • pip install black으로 black 패키지를 설치하면, lib의 site-packages에 설치됨


패키지 매니저

패키지를 설치하고 버전을 관리

pip, poetry


pip

  • 파이썬 내장 패키지 매니저로 가장 많이 사용

  • pip list --not required --format=freeze 를 입력하면 꼭 필요한 패키지만 보여줌

    • 의존성 패키지들이 제외됨
  • 최신 버전의 pip를 사용하는 것이 좋음

    • pip install --upgrade pip
  • 문제점

    • 개발 환경과 배포 환경 패키지가 분리되지 않음

      • 개발 환경에서만 사용하는 패키지와 배포 환경에서 사용하는 패키지를 구분할 수 없음
    • pip list로 패키지 간 의존성을 확인할 수 없음

간접 설치된 패키지들이 직접 설치한 패키지인 black과 의존성이 있는지 확인할 수 없음
    
pip uninstall 시 의존성이 있던 패키지들은 삭제되지 않음


Poetry

  • 앞선 pip 문제 해결을 위해 대체재 등장

    • 프로젝트 경로에서 poetry init으로 파이썬 프로젝트 초기화

    • 프로젝트 경로에 pyproject.toml 이라는 파일 생성

      • python 프로젝트에 대한 메타 정보를 담고 있는 파일


poetry add 명령어로 패키지 설치

  • 이 때 -D 옵션을 붙여 개발 환경에서만 사용할 패키지를 설치할 수 있음

  • pyproject.toml에서 group.dev (개발 환경에서만 사용하는 패키지) 확인 가능


  • 또한 패키지 간 의존성을 확인할 수 있음






※ 모든 이미지 및 코드 출처는 네이버 커넥트재단 부스트캠프 AI Tech 5기입니다. ※

profile
AI-Kid
post-custom-banner

0개의 댓글