Poetry Libraries
Poetry는 파이썬 라이브러리를 효율적으로 관리하고 배포할 수 있도록 지원하는 도구로 라이브러리를 설치 가능하게 만들기 위해 다음과 같은 절차를 따를 수 있다.
버전 관리
모든 프로젝트에 PEP 440을 준수하는 버전 번호를 요구한다. 버전 번호의 일관성을 유지하고, 패키지 관리 시스템과의 호환성을 보장한다.
1.0.0-hotfix
과 같은 형식은 PEP 440과 호환되지 않는다.1.0.0-post1
또는1.0.0.post1
과 같은 형식을 사용할 수 있다.
PEP 440
- 파이썬 패키지의 버전 식별과 의존성 명시를 의한 표준을 정의한 문서.
- 파이썬 패키지의 버전 번호를 일관되게 관리하고, 패키지 간의 의존성을 명확하게 지정하여 호환성을 보장하는 데 목적이 있다.
- 버전 식별자 형식
1
[N!]N(.N)*[{a|b|rc}N][.postN][.devN]
각 요소의 설명 -
N!
: 에포크(epoch) 번호로, 버전 체계의 중대한 변경을 나타냄. -N(.N)*
: 릴리스 번호로, 주 버전, 부 버전, 패치 버전 등을 포함. -{a|b|rc}N
: 사전 릴리스(pre-release)로, 알파(a
), 베타(b
), 릴리스 후보(rc
) 등을 나타낸다. -.postN
: 포스트 릴리스(post-release)로, 버전 이후의 수정 사항을 나타낸다. -.devN
: 개발 릴리스(development release)로, 개발 중인 버전을 나타낸다.
- 버전 비교
버전 번호를 비교하는 명확한 규칙을 제공
Final release는 pre-release보다 높은 우선 순위를 가진다.
Alpha는 Beta보다 낮고, Beta는 Release Candidate보다 낮다.
Post-release는 해당 release보다 높은 우선순위를 가진다.- 의존성 명세
==
: 특정 버전과 일치!=
: 특정 버전과 불일치<
,<=
,>
,>=
: 버전 범위 지정~=
: 호환되는 버전
락 파일 관리
라이브러리의 경우, poetry.lock
파일을 커밋할지 여부는 선택 사항으로 이 파일을 커밋하면 팀원들이 동일한 의존성 버전을 테스트할 수 있어 일관성을 유지할 수 있다.
락 파일은 해당 라이브러리를 의존하는 다른 프로젝트에는 영향을 미치지 않는다.
락 파일을 커밋하지 않기로 하면, .gitignore
파일에 추가하여 버전 관리에서 제외할 수 있다.
패키징
라이브러리를 배포하기 전 패키징을 해야 한다.
|
|
이 명령어는 소스 배포 형식인 sdist
와 컴파일된 패키지 형식인 wheel
두 가지 형식으로 패키지를 생성한다.
poetry는 패키지 빌드 시 자동으로 일부 메타데이터 파일을 포함시킨다.
예를 들어, LICENSE
파일은 wheel
의 .dist-info
디렉토리에 포함되며, sdist
의 루트 폴더에도 포함된다.
PyPI에 배포
라이브러리를 PyPI에 배포하려면 다음 명령어를 사용한다.
|
|
이 명령어는 라이브러리를 패키징하고 PyPI에 업로드한다. (단, PyPI에 등록된 사용자이며, 자격증명이 올바르게 구성되어 있어야 한다.)publish
명령어는 기본적으로 빌드를 수행하지 않으므로, 빌드와 배포를 함께 수행하려면 --build
옵션을 추가해야 한다.
|
|
개인 저장소에 배포
팀 내에서만 사용할 라이브러리를 배포하려면 개인 저장소를 활용할 수 있다.
이를 위해 먼저 개인 저장소를 전역 저장소 목록에 추가해야 한다. 저장소를 추가한 후, 다음 명령어로 배포할 수 있다.
|
|
참고 및 출처
Poetry
Libraries | Documentation | Poetry - Python dependency management and packaging made easy