-
uv 패키지 매니저와 PEP 723을 통해 의존성 문제 없이 Python 스크립트 실행이 가능해짐
-
uvx 기능은 Disposable 가상환경을 자동 생성하여 환경 설정의 불편함을 해결함
-
PEP 723 메타데이터를 Python 파일에 포함하면 스크립트 자동 실행 및 패키지 관리가 편리해짐
-
실행 스크립트 예시로 YouTube 자막 추출 프로그램을 빠르게 구현 및 배포할 수 있음
- 이를 통해 이제 Python도 간결한 단일 실행 파일 작성이 가능해져 스크립트 활용성이 크게 향상됨
개요
- Python에서 "일회성(one-off) 스크립트" 실행 시 매번 환경 설정과 패키지 설치 과정을 거쳐야 했던 불편함이 uv와 PEP 723 도입으로 사라짐
- uv는 Rust로 개발된 고속의 Python 패키지 및 프로젝트 매니저이며, 신규 기능 uvx를 포함하여 Disposable 가상 환경 설정, 패키지 자동 설치, Python 버전 연동을 매우 빠르고 간편하게 처리함
uv와 uvx 장점
- uvx 기능은 Nodejs 생태계의 npx와 유사하게 동작, 지정된 Python 패키지(예: ruff) 실행 환경을 신속하게 생성함
- Disposable virtual environment를 캐시로 활용하여 오버헤드 없이 빠른 실행 제공
- 환경 세팅과 의존성 설치가 명령 한줄로 이루어져, 개발자가 별도 환경 설정 관리 필요 없음
PEP 723 소개 및 활용
- PEP 723은 Python 스크립트 상단에 의존성 및 환경 메타데이터를 포함할 수 있도록 표준을 정의함
- 예시: 코드 상단에 requires-python, dependencies 등 명시 가능함
- 이를 인식한 외부 도구(uv 등)는 스크립트 파일 내 작성된 정보로 자동 설치, 환경 세팅, 실행을 처리함
uv와 PEP 723의 결합
- 실제 Python 예제 파일 상단에 해당 메타데이터를 작성하고, uv의 run 명령어로 실행 시 즉시 필요한 모든 패키지 자동 설치와 지정 Python 버전 세팅 후 코드 실행이 이루어짐
- 예시 코드는 인터넷 API(PEP 목록)를 호출하고 결과를 출력함. 추가 패키지 설치나 환경설정 필요 없이 한줄 실행 가능
실용 예: YouTube 자막 스크립트
- shebang(#!/usr/bin/env -S uv run --script)과 PEP 723 메타데이터를 추가한 Python 스크립트 예시 제공
- youtube-transcript-api 등 외부 패키지 자동 설치 및 가상환경 자동 세팅 처리
- 사용자는 실행 파일(ytt)로 Youtube 동영상 URL이나 ID를 인자로 주면, 자막을 추출하여 결과를 즉시 제공 받음
- chmod로 실행 권한 부여 후, 터미널에서 간단하게 실행 가능
개발자 경험 개선 및 가능성 확장
- 과거에는 단순한 스크립트 실행에도 Go 등 단일 실행 파일 바이너리 언어를 더 선호했으나, 이제 Python도 동등한 수준의 간편함 제공
- uv와 PEP 723 조합으로 Python 스크립트의 공유 및 배포, 실행 자동화가 크게 수월해짐
- Github 예제(cottongeeks/ytt-mcp)를 통해 좀 더 복잡한 사용 사례 개발 가능