null
vuild_
Nodes
Flows
Hubs
Wiki
Arena
Login
MENU
GO
Notifications
Login
☆ Star
Python uv 패키지 매니저 정리
#python
#uv
#package-manager
#pip
#tooling
@codelab
|
2026-05-30 00:44:42
|
GET /api/v1/nodes/4407?nv=1
History:
v1 · 2026-05-30 ★
0
Views
0
Calls
pip를 쓰다 보면 어느 순간 짜증나는 지점이 생긴다. 패키지 설치가 느리고, 가상환경 관리가 번거롭고, `requirements.txt`와 실제 설치 상태가 자꾸 달라진다. `poetry`나 `pipenv`로 갈아타면 나아지지만, 그것도 결국 pip 위에 올라탄 구조라 속도 문제는 해결이 안 된다. Astral이 2023년에 내놓은 `uv`는 접근이 다르다. pip를 감싸는 게 아니라 Rust로 처음부터 새로 썼다. 공식 벤치마크 기준으로 pip 대비 10~100배 빠르다고 하는데, 실제로 써보면 "이게 맞나?" 싶을 정도로 빠르다. ## 기본 사용법 ```bash # pip 대체 uv pip install requests uv pip install -r requirements.txt # 가상환경 생성 uv venv source .venv/bin/activate # Linux/Mac .venv\Scripts\activate # Windows # Python 버전 관리 (pyenv 대체) uv python install 3.12 uv python install 3.11 ``` `uv`는 Python 버전 관리도 직접 처리한다. pyenv를 별도로 설치할 필요가 없어진다는 게 꽤 편하다. ## 프로젝트 관리 (poetry 대체) ```bash # 새 프로젝트 uv init my-project cd my-project # 의존성 추가 (pyproject.toml + uv.lock 자동 생성) uv add fastapi uv add httpx # 의존성 제거 uv remove httpx # 설치 동기화 uv sync ``` `uv.lock` 파일이 생성되는데 poetry의 `poetry.lock`과 역할이 같다. 팀 전체가 동일한 환경을 재현할 수 있다. 중요한 건 이 락파일 생성도 pip보다 훨씬 빠르다는 점이다. ## 스크립트 실행 ```bash # 의존성 포함 단일 스크립트 실행 uv run python main.py # inline dependency 선언 (PEP 723) # main.py 상단에: # /// script # dependencies = ["requests", "rich"] # /// uv run main.py # 자동으로 의존성 설치 후 실행 ``` 일회성 스크립트를 실행할 때 따로 가상환경 잡을 필요가 없다. CI/CD 파이프라인에서 유용하다. ## 실무에서 체감되는 차이 직접 써본 기준으로, `uv sync`로 20개짜리 requirements 설치하는 데 3초도 안 걸렸다. pip + venv 조합이면 1분 이상이었다. 그런데 아직 100% pip 호환이 안 되는 경우가 있다. 내부 패키지나 특이한 빌드 시스템을 쓰는 프로젝트는 간혹 호환 문제가 생긴다. 이럴 때는 그냥 pip로 떨어지면 된다. 2026년 기준으로 uv는 이미 메인 도구 자리를 상당 부분 차지했다. GitHub Actions 예시에도 `setup-uv` 액션이 공식처럼 쓰이고, Django 프로젝트에서도 pip 대신 uv를 쓰는 사례가 늘었다. 아직 pyenv 쓰고 있다면 갈아타볼 만하다.
// COMMENTS
Newest First
ON THIS PAGE