안녕하세요 데잇입니다. Poetry 가상환경을 설정하는 방법은 지난 시간에 이미 다루었습니다.
가상환경을 설정하는 이유는 크게 다음과 같습니다.
프로젝트 격리: Poetry 가상환경을 사용하면 프로젝트별로 격리된 환경을 생성할 수 있으며, 이는 프로젝트 간에 종속성 충돌을 방지하고 프로젝트 간에 독립적으로 패키지를 관리할 수 있게 합니다.
패키지 버전 관리: Poetry 가상환경은 poetry.lock 파일을 통해 사용 중인 패키지의 정확한 버전을 고정하므로, 프로젝트의 일관성을 유지하고 다른 환경에서 동일한 종속성을 재현하는 데 도움을 줍니다.
종속성 설치 및 업데이트: Poetry 가상환경을 사용하면 poetry install 명령어를 통해 종속성을 쉽게 설치하고 관리할 수 있으며, 이를 통해 필요한 패키지를 효율적으로 업데이트할 수 있습니다.
사실, 이러한 장점을 실천하기 위해서는 단순히 POETRY 환경을 설정하는 것이 아니라 이전하는 작업이 필수적입니다. 이번 시간에는 POETRY 환경이전에 대해 살펴봅니다.
프로세스
1. Poetry 환경생성
poetry init # pyproject.toml 파일을 생성
poetry shell # Poetry 프로젝트 내에서 Poetry의 가상환경을 활성화 / exit을 통해 벗어날 수 있음
poetry add [라이브러리] # 필요한 라이브러리들 저장
poetry install # poetry.lock 파일 생성
pyproject.toml
프로젝트의 메타데이터와 종속성 정보 저장(python: ^3.9 등)
poetry init에 의해 생성 및 개발자가 직접 편집
poetry.lock
종속성을 포함한 실제 패키지 버전 및 패키지 간 의존성 고정
poetry install에 의해 생성 및 poetry가 종속성을 자동으로 관리하고 업데이트 수행
2. Poetry 환경이전
해당 폴더로 이동 후 pyproject.toml과 poetry.lock 파일 복사/붙여넣기(혹은 git repo에 저장)
해당 폴더에서 poetry install 수행
poetry init은 불필요(∵ pypeoject.toml이 이미 존재)
기타
pyproject.toml의 버전 지정방법
버전 정의 문법: Semantic Versioning (SemVer) 표기법
버전 정의 형식: MAJOR.MINOR.PATCH.
MAJOR (주 버전): 이 숫자는 호환되지 않는 변경사항이 있을 때 증가합니다. 주로 API 변경, 하위 시스템 변경 등과 관련됩니다.
MINOR (부 버전): 이 숫자는 하위 호환적인 새로운 기능이 추가될 때 증가합니다. 기존 기능의 확장 및 추가 기능과 관련됩니다.
PATCH (수정 버전): 이 숫자는 하위 호환적인 버그 수정이나 패치가 적용될 때 증가합니다.
버전 정의 구문
Exact version (정확한 버전): 1.2.3와 같이 정확한 버전을 지정합니다. 이 경우 해당 버전과만 호환됩니다.
예제: requests = "2.25.1" - 정확한 버전 2.25.1과 호환
Wildcard matching (와일드카드 일치): *를 사용하여 모든 버전과 호환됩니다.
예제: numpy = "*" - 모든 버전과 호환
Tilde range (틸데 범위): ~를 사용하여 마이너 버전까지 일치하는 범위를 지정합니다.
예제: Django = "~2.2" - 2.2.0부터 2.3.0 미만의 버전과 호환
Caret range (캐럿 범위): ^를 사용하여 마이너 버전과 패치 버전을 업데이트할 수 있는 범위를 지정합니다.
예제: Flask = "^1.1.2" - 1.1.2부터 2.0.0 미만의 버전과 호환
Hyphen range (하이픈 범위): -를 사용하여 두 버전 사이의 범위를 지정합니다.