UV: 빠르고 가벼운 Python 패키지 관리자

Python 패키지 관리를 할 때 가장 많이 사용하는 도구는 pip이다. 하지만 최근 uv라는 새로운 패키지 관리자를 접하고 사용중인데 속도도 매우 빠르고 많은 사람들이 사용했으면 좋겠다 라는 생각이 들어 이 글을 작성하게 됐다. 이번 글에서는 pipuv의 차이점과 장단점을 비교하고, uv의 기본적인 사용법을 소개한다.

1. pip와 uv의 차이점

1.1 pip란?

pip(Pip Installs Packages)는 Python의 공식 패키지 관리자로, PyPI(Python Package Index)에서 패키지를 설치하고 관리하는 역할을 한다. Python을 설치하면 기본적으로 포함되어 있으며, requirements.txt와 같은 의존성 관리 기능을 제공합니다.

1.2 uv란?

uv는 Pip과 Poetry를 대체할 수 있는 빠르고 가벼운 Python 패키지 관리자입니다. Rust로 작성되어 높은 성능을 제공하며, pip, pip-tools, venv, Poetry 등의 기능을 하나로 통합한 것이 특징입니다.

  • pip: Python 패키지를 설치하고 관리하는 기본 도구.
  • pip-tools: pip의 의존성 해결 기능을 강화해주는 도구로, requirements.txt 파일을 보다 안정적으로 생성할 수 있음.
  • venv: Python의 가상 환경을 생성 및 관리하는 기본 도구.
  • Poetry: 프로젝트 및 패키지 관리를 강화한 도구로, 의존성 관리와 빌드 기능을 제공.

2. pip와 uv의 장단점

2.1 pip의 장점

  • Python 기본 패키지 관리자로, 널리 사용되고 있음
  • 광범위한 문서와 지원 커뮤니티 보유
  • pip-tools와 조합하여 보다 정교한 의존성 관리 가능

2.2 pip의 단점

  • 속도가 느릴 수 있음
  • 의존성 해결 능력이 제한적 (복잡한 프로젝트에서 문제 발생 가능)
  • 가상 환경을 별도로 생성해야 함 (venv 필요)

2.3 uv의 장점

  • Rust 기반으로 매우 빠른 성능 제공
  • 가상 환경을 별도 설정 없이 자동 관리
  • pip-tools 없이도 강력한 의존성 해결 기능 지원
  • pip, venv, pip-tools 등을 통합한 일관된 환경 제공

2.4 uv의 단점

  • 아직 상대적으로 새로운 도구로, 일부 사용자가 익숙하지 않을 수 있음
  • 일부 패키지에서 예상치 못한 호환성 문제가 있을 수 있음
비교 항목 pip uv
언어 Python Rust
성능 일반적 매우 빠름
가상 환경 지원 별도(venv) 자체 지원
의존성 해결 제한적 강력한 해결 기능
멀티 플랫폼 지원 지원
사용 용이성 익숙함 간단하고 빠름

3. uv 사용법

uv는 설치 후 다양한 명령어를 통해 활용할 수 있습니다.

3.1 uv 설치

curl -LsSf https://astral.sh/uv/install.sh | sh

3.2 프로젝트 초기화

uv init [프로젝트명]

이 명령어는 프로젝트 디렉토리를 생성하고, pyproject.toml 파일을 포함한 초기 설정 파일들을 생성합니다.

3.3 패키지 추가

uv add 패키지명
  • 특정 패키지를 프로젝트에 추가합니다.
  • 예시:
uv add requests
  • 개발용 의존성 추가:
uv add pytest --dev
  • 특정 버전 설치:
uv add requests==2.25.1
  • 추가 옵션 사용:
uv add 패키지명 --extra 옵션명

3.4 패키지 제거

uv remove 패키지명
  • 프로젝트에서 특정 패키지를 제거합니다.
  • 예시:
uv remove requests

3.5 의존성 동기화

uv sync
  • pyproject.tomluv.lock 파일을 기반으로 의존성을 자동으로 설치 및 동기화합니다.
  • 개발용 의존성을 제외하고 동기화하려면:
uv sync --no-dev

3.6 가상 환경 생성 및 관리

  • 가상 환경 생성:
uv venv [가상환경경로]
  • 특정 경로에 가상 환경을 생성합니다.
  • 예시:
uv venv .venv
  • 특정 Python 버전 사용하여 가상 환경 생성:
uv venv --python 3.9.7
  • 가상 환경 활성화:
source .venv/bin/activate
  • Windows에서는:
.venv\Scripts\activate
  • 가상 환경 비활성화:
deactivate

4. 자주 묻는 질문 (FAQ)

Q1. 기존 pip 프로젝트에서 uv를 사용할 수 있나요?

네, 가능합니다. 기존 pip 프로젝트에서 uv로 전환하려면 다음 명령어를 실행하면 됩니다:

uv sync

이 명령어는 기존 requirements.txt 또는 pyproject.toml을 기반으로 의존성을 자동으로 설정합니다.

Q2. uvPoetry의 차이점은 무엇인가요?

  • uvpip, venv, pip-tools 등을 대체하는 통합형 패키지 관리자입니다.
  • Poetry는 프로젝트 관리 기능이 더 강력하며, 패키지 퍼블리싱과 같은 기능도 포함되어 있습니다.
  • 속도와 가벼움을 원하면 uv, 프로젝트 전체 관리를 원하면 Poetry를 선택하는 것이 좋습니다.

Q3. uv를 사용할 때 발생할 수 있는 문제와 해결 방법은?

  • 문제: 일부 패키지가 uv와 호환되지 않을 수 있음.
    • 해결: uv pip install을 사용하여 전통적인 pip 방식으로 설치할 수 있습니다.
uv pip install 패키지명
  • 문제: uv sync 시 패키지 충돌이 발생할 수 있음.
    • 해결: uv sync --force 명령어를 사용하여 강제로 동기화할 수 있습니다.
지난 크리스마스 선물로 게임 컨트롤러를 선물 받았습니다.
 
이전까지는 XBOX 무선 컨트롤러를 사용해서 블루투스 연결을 해서 사용했습니다.
저는 주로 아이패드나 PC에 연결해서 패드로 게임을 했었습니다.
SKT를 통해 올 엑세스로 XBOX를 사고 싶었지만 물량도 없고, 최근에는 게임을 많이 하지 않아서 콘솔에 대한 흥미도 많이 떨어졌구요, 스위치는 팔아먹은지 오래거든요....
 
그러는 와중에 Backbone one을 선물 받았습니다.
 
Backbone one(이하 백본원)을 설명하기 전에 스마트폰용 게임 컨트롤러는 여러가지가 있습니다.
그 중에서 유명한것으로는 백본원, Razer Kishi2, Gamesir X2 같은 제품들이 유명합니다.
 
Razer Kishi2 같은 경우에는 너무 비싸고 kishi2 보다는 kishi가 더 맘에 들었는데 그건 구하기가 어렵더라구요 ㅠ
 
여러모로 backbone one이 디자인적으로나 가격적으로 맘에 들었습니다.
 

도착한  backbone one입니다. 

 

백본원 언박싱-1
백본원 박스 전면
백본원 박스 후면

박스 전면에는 백본원 외형이 있고 후면에는 각 버튼 설명과 어디로 충전을 하고 어디로 유선 이어폰을 연결 할 수 있는지 설명해주고 있습니다.

 

 

 

박스를 개봉

박스를 개봉하면 언제 어디서든 즐길 수 있다는 문구가 보입니다.

 

제품 확인

상자를 열면 드디어 백본원을 만날 수 있습니다.

 

측면

트리거 버튼까지 제가 익숙한 xbox패드와 유사합니다.

 

길이 조절

잡아 당기면 큰 스마트폰도 충분히 끼울 수 있도록 디자인 되어 있다.

 

장착 설명서

장착을 할때는 꼭 위쪽부분을 먼저 장착하고 아래충전 단자를 연결해주어야 한다. 그래야 끼우기 편하다...

 

뭔지 모를 부품...

뭔지 모를 부품이 하나 있다. 나중에 알았지만 요즘 스마트폰들이 카툭튀가 심해서 저 부품으로 좀 띄워서 카메라에 흠집이 나느것을 방지해주는 부품으로 확인된다.

 

부품을 장착한 모습

아이폰에서 설정 -> 일반 -> 게임컨트롤러 에 들어가면 설정도 있다

프로파일러를 통해 각 버튼에 다른 버튼으로 매핑해서 사용할 수 있다.

 

설정 화면

 

만듬새는 전반적으로 좋다.

인식도 잘 된다

 

단점이 하나 있는데 나는 생폰으로 쓰다보니 몰랐는데, 케이스를 사용하는 경우 케이스를 빼야 백본원에 연결할 수 있다는 단점이 있다.

그나마 이 부분은 사소한 단점이라 생각된다.

 

연결 후 몇가지 게임을 해 보았다.

  • 원신 : 폰으로 할 때랑 전혀 다른 플레이를 할 수 있었다. 처음 해봤는데 게임 컨트롤러에 이렇게 대응이 잘 된 게임인지 몰랐다. 재미를 붙여볼까 생각했지만 역시나 귀찮아서...원신을 하는 사람이라면 엑박 컨트롤러를 블루투스로 연결하는 것도 좋은 방법이지만, 그 보다 백본원을 사용하는 것도 괜찮은 선택이라고 생각된다.
  • 던파M :  게임이 좀 더 컨트롤러에 대한 대응이 필요한 것으로 보여진다.
  • 언디셈버 : 매핑이 뭔가 적응하기 어려웠다. 게임이 문제인지 내가 문제인지 별 흥미를 느끼지 못함..
  • xbox cloud gaming : 진짜 신세계였다. 무료쿠폰으로 한달 즐겼지만 게임할 시간이 많다면 game pass를 지르고 게임을 즐길만한 수준의 성능을 보여줬다.
  • 그 외에도 많은 게임들이 의외로 컨트롤러를 통해 잘 됐었다. 하지만......

 

앞으로도 더 많은 게임들이 컨트롤러 지원을 해서 컨트롤러로 할 수 있는 게임이 더 많아졌으면 좋겠다.

'잡다한 리뷰' 카테고리의 다른 글

매트리스 구입기 [삼분의일 매트리스 후기]  (0) 2018.07.22
 
사설 ip 대역에서 docker repository를 이용해야 하는 경우가 있다.
 
현재 docker repositry의 경우 ssl 과 도메인 사용을 강제하고 있어서 사설 ip 대역에서 사용하기 힘들다.
 
이 경우에는 아래 명령어를 통해 무시하는 사이트를 등록하고 우회해야 한다.
 
echo -e '{\n\t"insecure-registries": ["{repository_host}:{repository_port}"] \n}' | sudo tee /etc/docker/daemon.json
>> /etc/docker/daemon.json 파일에 insecure-registries 옵션으로 특정 사이트를 등록하는 명령어
 
이 명령어를 실행 후 docker 서비스를 재시작하면 된다.
 
 
 

+ Recent posts