워로디스

Python. Python Install Manager 와 uv 운용 본문

개발/Python

Python. Python Install Manager 와 uv 운용

워로디스 2026. 5. 24. 08:24

Python Install Manager는 주로 Windows에서 Python 런타임을 설치·관리하는 공식 도구이고, uv는 패키지/프로젝트/가상환경 관리 도구이면서 필요하면 Python 자체도 설치할 수 있습니다. Python.org는 Python Install Manager를 Windows용 런타임 관리 도구로 설명하고 있고, uv도 기존 Python을 감지해 쓰거나 필요 시 자체 관리 Python을 설치할 수 있다고 설명합니다. (Python.org) (Astral Docs)

문제가 생길 수 있는 지점은 보통 세 가지입니다.

첫째, python, py, python3.12 같은 명령이 어느 설치본을 가리키는지 불명확해질 수 있습니다. uv는 기본적으로 기존 Python이 있으면 감지해 사용할 수 있고, 자체 관리 Python도 설치할 수 있습니다. 또한 uv가 설치한 Python 실행 파일도 PATH에 들어갈 수 있습니다. (Astral Docs) (Astral Docs)

둘째, 프로젝트마다 의도한 Python 버전과 실제 사용 버전이 달라질 수 있습니다. 예를 들어 Python Install Manager로 설치한 3.12와 uv가 관리하는 3.13이 같이 있으면, uv venv, uv sync, uv run이 선택하는 인터프리터가 기대와 다를 수 있습니다. 이 경우 .python-version이나 uv python pin 3.12처럼 프로젝트 단위로 버전을 고정하는 게 좋습니다. uv는 .python-version을 보고 해당 버전을 설치/사용할 수 있습니다. (Astral Docs)

셋째, Windows에서는 py 런처/Install Manager/uv의 Python discovery가 겹치면서 드물게 이상 동작이 보고된 적이 있습니다. 예컨대 Python Install Manager 환경에서 uv python listuv run python --version 실행 시 Python 문서 페이지가 열리는 이슈가 보고된 사례가 있습니다. 일반적 충돌이라기보다는 발견/런처 동작의 엣지 케이스에 가깝습니다. (GitHub)

추천 운영 방식은 둘 중 하나입니다.

1. Python Install Manager는 “시스템 Python 설치용”, uv는 “프로젝트/패키지/venv 관리용”으로 쓰기

py --list
uv python list
uv venv --python 3.12
uv sync
uv run python --version

이 방식에서는 Python 자체는 공식 관리자에 맡기고, uv는 가상환경과 의존성 관리에 집중시킵니다. uv가 자체 Python을 자동으로 받는 게 싫으면 다음 옵션을 씁니다.

uv venv --no-managed-python
uv run --no-managed-python python --version

2. uv에 Python 버전까지 맡기기

uv python install 3.12 3.13
uv python pin 3.12
uv sync
uv run python --version

이 방식은 프로젝트별 재현성이 좋습니다. 다만 Python Install Manager로 설치한 Python과 uv-managed Python이 같이 있으면 python 명령의 우선순위가 헷갈릴 수 있으니, 프로젝트 안에서는 가급적 python 직접 실행보다 uv run python을 쓰는 편이 안전합니다.

가장 안전한 체크리스트는 아래입니다.

where python
where py
where uv
py --list
uv python list
uv run python --version

그리고 프로젝트 루트에 고정합니다.

uv python pin 3.12
uv sync

Windows라면 Python Install Manager로 기본 런타임을 설치하고, 프로젝트별 실행·가상환경·의존성은 uv로 관리하는 조합이 가장 덜 헷갈립니다. 프로젝트 재현성을 더 중시하면 Python 버전 관리까지 uv로 통일하는 쪽이 낫습니다.

반응형