#Packaging

7 편의 글

파이썬 패키징 #7 팀 규약과 도구 선택: uv, poetry, pip
4 분 소요

파이썬 패키징 #7 팀 규약과 도구 선택: uv, poetry, pip

시리즈 마지막 편으로, 도구 선택과 팀 규약을 정리합니다. uv, poetry, pip+venv를 한 표에 놓고 가르는 기준, 마이그레이션의 실제 비용, CI에서 캐싱과 frozen 검증을 거는 법, 도커 이미지에서 uv를 쓰는 표준 패턴, 새 팀원이 와도 무너지지 않는 팀 규약 체크리스트까지 다루고 시리즈 전체를 회고합니다.

파이썬 패키징 #6 배포: wheel 빌드와 PyPI 업로드
5 분 소요

파이썬 패키징 #6 배포: wheel 빌드와 PyPI 업로드

받는 쪽에서 만드는 쪽으로 방향을 바꿔, 내 코드를 설치 가능한 패키지로 만들어 올리는 워크플로를 정리합니다. src 레이아웃과 빌드 백엔드의 역할, sdist와 wheel의 차이, uv build로 빌드하고 TestPyPI에서 리허설한 뒤 PyPI에 올리는 순서, GitHub Actions의 Trusted Publishing으로 토큰 없이 배포하는 현대 표준, 사내 전용 배포 대안까지 다룹니다.

파이썬 패키징 #5 의존성 잠금: lock 파일과 재현성
5 분 소요

파이썬 패키징 #5 의존성 잠금: lock 파일과 재현성

선언과 잠금이 왜 분리되는지에서 시작해 uv.lock의 내용을 직접 읽습니다. 전이 의존성까지 전부 고정하는 해석 결과, 해시 검증이 막는 공급망 위험, CI에서 --frozen으로 잠금 그대로 재현하는 법, 업그레이드를 일상 업무로 만드는 전략, 도구 간 이동을 여는 표준 pylock.toml(PEP 751)까지 다룹니다.

파이썬 패키징 #4 uv: 2026년 표준 워크플로
5 분 소요

파이썬 패키징 #4 uv: 2026년 표준 워크플로

가상 환경, 의존성 설치, lock, 파이썬 버전 관리를 한 도구로 묶은 uv의 일상 워크플로를 정리합니다. init·add·sync·run 네 명령이 앞 편들의 수작업을 대체하는 과정, 파이썬 인터프리터까지 uv가 설치하는 구조, uvx와 uv tool로 전역 도구를 격리 설치하는 법, 기존 requirements.txt 프로젝트를 흡수하는 마이그레이션까지 다룹니다.

파이썬 패키징 #3 pyproject.toml: 프로젝트 설정의 표준
5 분 소요

파이썬 패키징 #3 pyproject.toml: 프로젝트 설정의 표준

setup.py와 흩어진 설정 파일들의 시대가 pyproject.toml 한 파일로 수렴한 과정을 정리합니다. project 테이블의 메타데이터와 의존성 선언, extras와 dependency-groups로 선택 의존성과 개발 의존성을 가르는 법, build-system의 역할, ruff와 pytest 설정까지 tool 테이블로 모으는 실전 구성을 다룹니다.

파이썬 패키징 #2 pip와 requirements.txt: 전통 워크플로의 한계
5 분 소요

파이썬 패키징 #2 pip와 requirements.txt: 전통 워크플로의 한계

pip의 동작 원리와 requirements.txt 워크플로를 정리하고, 이 방식이 어디서 무너지는지 짚습니다. 버전 지정자를 읽는 법, pip freeze가 직접 의존성과 전이 의존성을 구분하지 못하는 문제, 버전을 안 박으면 설치 시점마다 결과가 달라지는 재현성 구멍, constraints 파일까지 다루며 다음 세대 도구가 나온 이유를 만듭니다.

파이썬 패키징 #1 가상 환경: 환경이 꼬이는 원리와 venv
5 분 소요

파이썬 패키징 #1 가상 환경: 환경이 꼬이는 원리와 venv

파이썬 환경이 꼬이는 구조적 원인부터 정리합니다. import가 패키지를 찾는 경로와 site-packages가 하나뿐이라 생기는 충돌, 시스템 파이썬을 건드리면 안 되는 이유와 PEP 668 에러의 의미, venv로 프로젝트마다 환경을 격리하는 방법, activate의 정체가 PATH 조작일 뿐이라는 것까지 다룹니다.