네이버 부스트캠프 학습 정리/8주차

[AI 서비스 기초] 파이썬 버전 관리

AI쟁이J 2023. 4. 29. 18:25

버전과 버저닝

소프트웨어에 Unique한 버전 이름, 버전 번호를 할당하는 과정.

다양한 버전을 관리하고 식별하기 위해 사용한다.

 

CalVer (Calendar Versioning)

날짜 기반 시스템을 통한 버전 번호 할당 방법.

버전 번호를 연도와 월로 구성한다. 

이해하기 쉬우며 날짜 기반으로 출시 시기를 예측하기 쉽다.

ex) Ubuntu 20.04

 

SemVer (Semantic Versioning)

마침표로 구분한 주 번호, 부 번호, 패치 번호로 구성

이전 버전과 호환되지 않는 변경사항이 있으면 주 번호를 증가시킴

이전 버전과 호환되며 새로운 기능이 추가되면 부 번호를 증가시킴

이전 버전의 버그 수정이 진행되면 패치 번호가 증가됌.

ex) Python 3.11.0, 메이플스토리 릴리즈 V.1.2.16

 

HashVer (Hash Versioning)

해시 알고리즘을 사용해 버전에 대한 고유 식별자를 생성 

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

ex) Git commit 8e6d3rfd

 

파이썬의 버저닝

파이썬의 경우 SemVer를 사용해 Versioning을 한다.

파이썬 3.11.x 버전은 아래 마이너 버전 (3.10.x, 3.9.x ...)에 호환된다.

하지만 파이썬 3.x 버전은 아래 메이저 버전 2.x에 호환되지 않는다.

파이썬2 에서는 print "hi" 였지만 현재의 파이썬3 에서는 print("hi") 이다.  파이썬2의 코드는 동작하지 않는다.

 

파이썬을 설치하는 방법에는 다양한 방법이 있다. conda, pyenv, 홈페이지 설치, Docker 등...

각 방법마다 장단점이 있다.

 

가상 환경

어떤 프로젝트를 진행할 때, 비슷하면서 다른 프로젝트를 다시 해야하는 경우 로컬에 설치한 패키지 폴더가 호환이 되지 않는 경우가 생길 수 있다.

따라서 가상 환경을 통해 프로젝트 별로 각자의 환경을 갖게 하는 것이 필요하다. (환경 격리)

 

venv

$ python -m venv (프로젝트 명)

를 통해 venv 가상 환경을 설정한다.

$ .\venv\Scripts\activate

를 사용해 가상환경을 실행할 수 있다.

이 가상 환경에 패키지를 설치할 수 있다.

 

pip

파이썬의 패키지 매니저로, 가장 많이 사용한다.

$ pip install black

black이라는 패키지를 설치하는 예시.

$ pip list
$ pip list --not-required --format=freeze

설치된 패키지 목록 출력과, 의존성 패키지를 제외하고 출력하는 코드

$ pip install -r requirements.txt

프로젝트에서는 주로 requirements.txt에 필요한 패키지 정보를 담고 있고, 위 명령어를 통해 한번에 설치할 수 있다.

pip 버전 문제가 생겨 설치가 안되는 경우가 종종 발생하는데, 이 경우에는 최슨 버전의 pip를 설치해서 사용하면 해결되는 경우가 있다.

$ pip install --upgrade pip

 

문제점

● 개발 환경과 배포 환경의 패키지가 분리되지 않는다.

pip list를 통해 패키지간 의존성을 알 수 없다.

pip uninstall에서 의존성이 있던 패키지까지 함께 삭제되지 않는다.

즉, 정교하게 패키지 관리를 할 수 없다는 문제가 있다.

 

Poetry

pip의 문제를 해결하기 위한 대체제 오픈소스 라이브러리.

설치 방법:

(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -

다음의 코드 실행.

%USERPROFILE%\.poetry\bin

이후 PATH 환경 변수에 추가하면 된다.

 

설치 이후 pip install을 대체하는 역할로

$ poetry add

를 사용해 패키지를 설치할 수 있으며,

설치한 패키지와 간접적으로 설치된 패키지들간의 의존성을 명확히 볼 수 있다.

이를 통해 pip와 다르게 얻을 수 있는 점으로는

 

● 개발, 운영 환경을 구분해 패키지를 설치할 수 있다.

● 패키지간의 의존성을 볼 수 있다.

● 특정 패키지 삭제 시 의존성 패키지를 함께 삭제할 수 있다.

 

'네이버 부스트캠프 학습 정리 > 8주차' 카테고리의 다른 글

[AI 서비스 기초] Docker  (0) 2023.04.29
[AI 서비스 기초] Linux  (0) 2023.04.29