버전 관리와 메타데이터
패키지 메타데이터 관리하기
버전 관리와 메타데이터은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
메타데이터가 중요한 이유
메타데이터는 코드를 제외한 패키지의 모든 정보입니다. 버전, 설명, 라이선스, 작성자, 링크 등이 여기에 해당합니다. PyPI는 이를 사용해 프로젝트를 표시하고, pip는 종속성을 해결하는 데 사용합니다.
좋은 메타데이터는 패키지를 신뢰할 수 있고 설치하기 쉽게 만듭니다.
유의적 버전 관리
규칙은 MAJOR.MINOR.PATCH입니다.
- MAJOR 호환성을 깨는 변경
- MINOR 이전 버전과 호환되는 새로운 기능
- PATCH 이전 버전과 호환되는 버그 수정
사용자는 업그레이드가 안전한지 판단할 때 이 규칙을 활용합니다.
version = '2.4.1'
major, minor, patch = version.split('.')
print('Major', major, 'Minor', minor, 'Patch', patch)
print('Bug fix -> bump patch to', major + '.' + minor + '.' + str(int(patch) + 1))다음 버전 선택하기
버전 변경 수준을 정하는 것은 규칙에 따라 이루어집니다. API를 변경해 호환성을 깨뜨렸는지, 기능을 추가했는지, 아니면 버그만 수정했는지를 판단하면 됩니다. 이 규칙을 명문화하면 릴리스가 일관되게 진행됩니다.
def bump(version, kind):
major, minor, patch = (int(x) for x in version.split('.'))
if kind == 'major':
return str(major + 1) + '.0.0'
if kind == 'minor':
return str(major) + '.' + str(minor + 1) + '.0'
return str(major) + '.' + str(minor) + '.' + str(patch + 1)
print(bump('1.2.3', 'minor'))
print(bump('1.2.3', 'major'))시험판 및 개발 버전
파이썬에서는 접미사를 사용할 수 있습니다. 1.0.0a1(알파), 1.0.0b2(베타), 1.0.0rc1(릴리스 후보), 1.0.0.dev3와 같은 형식입니다. pip는 이러한 버전을 최종 버전인 1.0.0보다 이전 버전으로 처리하므로, 시험 사용자가 일반 사용자에게 영향을 주지 않고 선택하여 사용할 수 있습니다.
단일 진실 공급원
버전은 정확히 한 곳에서만 관리하세요. pyproject.toml에 정적으로 선언하거나, dynamic으로 표시하고 setuptools-scm과 같은 도구를 통해 코드(또는 태그)에서 읽어 오면 됩니다. 두 곳에 복사해 두면 결국 서로 달라집니다.
설명과 README
짧은 description은 검색 결과에 표시됩니다. 긴 설명은 readme(일반적으로 README.md)에서 가져오며 PyPI 프로젝트 페이지로 렌더링됩니다. readme = 'README.md'로 지정합니다.
명확한 README는 가장 좋은 홍보 수단입니다.
라이선스
사용자가 자신의 권리를 알 수 있도록 라이선스를 선언하세요. 최신 프로젝트에서는 license = 'MIT'와 같은 SPDX 표현식을 사용합니다. 라이선스가 없으면 모든 권리가 보유자에게 남으므로 사용자의 채택을 방해합니다.
popular = ['MIT', 'Apache-2.0', 'BSD-3-Clause', 'GPL-3.0-only']
for lic in popular:
print('SPDX:', lic)분류자
classifiers는 PyPI 목록에 있는 표준화된 태그입니다. 예를 들어 'Programming Language :: Python :: 3.11'이나 'Development Status :: 4 - Beta'와 같습니다. 이 태그는 PyPI의 필터에 사용되며 프로젝트의 성숙도와 지원 버전을 나타냅니다.
프로젝트 URL
[project.urls] 아래에 홈페이지, 문서, 소스, 변경 기록과 같은 링크를 추가합니다. 이 링크는 PyPI의 사이드바에 표시되어 사용자가 저장소와 문서를 쉽게 찾도록 도와줍니다.
urls = {
'Homepage': 'https://example.com',
'Source': 'https://github.com/me/mytool',
'Issues': 'https://github.com/me/mytool/issues',
}
for label, link in urls.items():
print(label.ljust(10), link)검색을 위한 키워드
keywords 필드는 사용자가 검색으로 패키지를 찾는 데 도움이 되는 짧은 용어의 목록입니다. 일반적인 단어를 무작정 넣기보다 ['cli', 'automation', 'excel']처럼 사람들이 실제로 입력할 단어를 선택하세요.
분류자와 함께 사용하면 키워드가 프로젝트의 검색 가능성을 높여 줍니다.
변경 기록
각 버전에서 변경된 내용을 기록하는 CHANGELOG를 관리하세요. 사용자는 업그레이드하기 전에 새로운 기능과 호환성을 깨는 변경 사항을 확인하기 위해 이를 읽습니다. [project.urls] 아래에 연결하면 PyPI 페이지에서 한 번의 클릭으로 열 수 있습니다.
좋은 변경 기록은 버전 번호를 사용자가 따라갈 수 있는 이야기로 바꿔 줍니다.
간단히 확인하기
버전 관리 지식을 테스트해 보세요.
복습
패키지 메타데이터를 관리하는 방법을 익혔습니다.
- 시맨틱 버전 관리 MAJOR.MINOR.PATCH와 사전 출시 접미사
- 버전을 단일 정보 원천에 보관하기
description, README 긴 설명,license제공하기classifiers와[project.urls]를 추가하여 PyPI에 프로젝트가 잘 표시되도록 하기
자주 묻는 질문
“버전 관리와 메타데이터” 강의는 무료인가요?
네 — “버전 관리와 메타데이터” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“버전 관리와 메타데이터”에서 뭘 배우나요?
패키지 메타데이터 관리하기 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Python Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“버전 관리와 메타데이터” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 프로젝트 구조와 pyproject.toml
- build로 빌드하기
- 버전 관리와 메타데이터
- twine으로 게시하기