이 문서는 langchain-teddynote 패키지의 PyPI 배포 프로세스를 설명합니다.
# UV 설치 (권장)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 또는 Homebrew 사용
brew install uv
# Twine 설치 (이미 dependencies에 포함)
pip install twine# ~/.bashrc 또는 ~/.zshrc에 추가
export TWINE_USERNAME=__token__
export TWINE_PASSWORD=pypi-xxxxx # PyPI API 토큰
# TestPyPI용
export TWINE_TEST_USERNAME=__token__
export TWINE_TEST_PASSWORD=pypi-xxxxx # TestPyPI API 토큰[distutils]
index-servers =
pypi
testpypi
[pypi]
username = __token__
password = pypi-xxxxx
[testpypi]
repository = https://test.pypi.org/legacy/
username = __token__
password = pypi-xxxxx- PyPI 계정 설정 접속
- "API tokens" 섹션에서 "Add API token" 클릭
- 토큰 이름 입력 및 범위 설정
- 생성된 토큰 안전하게 보관
- 형식:
major.minor.patch(예: 0.4.0) - 버전 소스:
langchain_teddynote/__init__.py의__version__변수
- Patch 버전: 0-99 (100이 되면 자동으로 minor 증가)
- Minor 버전: 0-99 (100이 되면 자동으로 major 증가)
- Major 버전: 제한 없음
- Patch (기본): 버그 수정, 작은 개선
- Minor: 새로운 기능 추가 (하위 호환성 유지)
- Major: 큰 변경사항, API 변경 (하위 호환성 깨짐)
python publish.py자동으로 수행되는 작업:
- 버전 0.4.0 → 0.4.1로 증가
- 빌드 디렉토리 정리
- 패키지 빌드 (wheel & sdist)
- PyPI 업로드
- Git 커밋 및 태그 생성
# Minor 버전 증가 (0.4.0 → 0.5.0)
python publish.py minor
# Major 버전 증가 (0.4.0 → 1.0.0)
python publish.py major# TestPyPI로 배포하여 테스트
python publish.py --test
# 설치 테스트
pip install -i https://test.pypi.org/simple/ langchain-teddynote==0.4.1# 실제 실행 없이 프로세스 확인
python publish.py --dry-run
# Minor 버전 증가 dry-run
python publish.py minor --dry-run배포 스크립트는 자동으로 Git 태그를 생성하지만, 원격 저장소에는 수동으로 푸시해야 합니다:
# 특정 태그 푸시
git push origin v0.4.1
# 모든 태그 푸시
git push origin --tags| 옵션 | 설명 | 예시 |
|---|---|---|
| (없음) | Patch 버전 증가 (기본) | python publish.py |
minor |
Minor 버전 증가 | python publish.py minor |
major |
Major 버전 증가 | python publish.py major |
--test |
TestPyPI로 배포 | python publish.py --test |
--dry-run |
실제 실행 없이 테스트 | python publish.py --dry-run |
--no-tag |
Git 태그 생성 건너뛰기 | python publish.py --no-tag |
--no-clean |
빌드 디렉토리 정리 건너뛰기 | python publish.py --no-clean |
필요시 수동으로 배포할 수 있습니다:
# 1. 빌드 디렉토리 정리
rm -rf dist/ build/ *.egg-info
# 2. 패키지 빌드
uv build
# 3. 배포 전 확인
twine check dist/*
# 4. TestPyPI 업로드
twine upload --repository testpypi dist/*
# 5. PyPI 업로드
twine upload dist/*# UV 설치
curl -LsSf https://astral.sh/uv/install.sh | sh
# 또는 Python build 모듈 사용
pip install build
python -m buildpip install twine
# 또는
pip install -e . # dependencies에 포함되어 있음- API 토큰이 올바른지 확인
- 사용자명이
__token__인지 확인 - TestPyPI와 PyPI 토큰을 혼동하지 않았는지 확인
# 이미 존재하는 버전인 경우
python publish.py minor # 다음 버전으로 증가# 기존 태그 삭제 (주의!)
git tag -d v0.4.1
git push origin :refs/tags/v0.4.1
# 다시 배포
python publish.py배포에 문제가 있는 경우:
-
PyPI에서는 버전을 삭제할 수 없습니다 (영구 보관)
-
대신 새로운 수정 버전을 배포:
python publish.py patch # hotfix 버전 배포 -
Git에서 태그 제거 (선택사항):
git tag -d v0.4.1 git push origin :refs/tags/v0.4.1
배포 전 확인사항:
- 모든 테스트 통과
- CHANGELOG 업데이트
- 문서 업데이트
- 의존성 버전 확인
- TestPyPI에서 테스트 완료
문제가 있거나 질문이 있으시면: