파이쎤 uv 설치 방법
1.UV 설치 방법
1.1. 권장 설치 방법 (PowerShell 스탠드얼론)
이 방법은 UV를 시스템 PATH에 독립적으로 설치하며, UV 자체 업데이트 기능도 포함되어 가장 편리합니다.
-
PowerShell 관리자 권한으로 실행:
- Windows 시작 메뉴에서 "PowerShell"을 검색합니다.
- "Windows PowerShell" 또는 "PowerShell"을 마우스 오른쪽 버튼으로 클릭하고 "관리자 권한으로 실행"을 선택합니다.
- 사용자 계정 컨트롤(UAC) 메시지가 나타나면 "예"를 클릭합니다.
-
UV 설치 명령어 실행:
- PowerShell 창에 다음 명령어를 입력하고 Enter를 누릅니다:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- 이 명령어는 Astral 공식 웹사이트에서 UV 설치 스크립트를 다운로드하여 실행합니다.
- PowerShell 창에 다음 명령어를 입력하고 Enter를 누릅니다:
-
설치 확인:
- 설치가 완료되면, 현재 PowerShell 창을 닫고 새로 연 다음, 다음 명령어를 입력하여 UV가 제대로 설치되었는지 확인합니다:
uv --version
- UV 버전 정보가 출력되면 성공적으로 설치된 것입니다. (예:
uv 0.1.X
)
- 설치가 완료되면, 현재 PowerShell 창을 닫고 새로 연 다음, 다음 명령어를 입력하여 UV가 제대로 설치되었는지 확인합니다:
1.2. 다른 설치 방법 (참고)
pipx
를 이용한 설치 (Python 환경에 설치):pipx
는 Python 애플리케이션을 격리된 환경에 설치하는 도구입니다.uv
를 Python 애플리케이션으로 관리하고 싶을 때 사용합니다. 이 방법은pip install pipx # pipx가 없다면 먼저 설치pipx ensurepath # pipx 경로를 PATH에 추가 (최초 1회) pipx install uv
uv
가 특정 Python 환경에 종속된다는 단점이 있습니다.
02. UV 주요 사용방
pip
, venv
, pip-tools
의 기능을 통합하여 제공합니다.2.1. 가상 환경 생성 및 활성화
uv
사용:
cd my_project
# 2. 가상 환경 생성 (기본 이름: .venv)
uv venv
# 3. 가상 환경 활성화
# Windows (PowerShell):
.venv\Scripts\Activate.ps1
# Windows (Command Prompt):
.venv\Scripts\activate.bat
# Linux / macOS (Bash/Zsh):
source .venv/bin/activate
pip
/ venv
기존 사용:
cd my_project
# 2. 가상 환경 생성 (기본 이름: .venv)
python -m venv .venv
# 3. 가상 환경 활성화 (UV와 동일)
# Windows (PowerShell):
.venv\Scripts\Activate.ps1
# Windows (Command Prompt):
.venv\Scripts\activate.bat
# Linux / macOS (Bash/Zsh):
source .venv/bin/activate
비교:
uv
는uv venv
단일 명령어로 가상 환경을 생성합니다.- 기존에는
python -m venv
를 사용했습니다. - 가상 환경 활성화 방법은 동일합니다.
2.2. 패키지 설치
uv
사용 (권장):
활성화된 가상 환경 내에서:
uv pip install <패키지_이름>
: 단일 패키지 설치uv pip install requestsuv pip install flask==2.3.0 # 특정 버전 설치
uv pip install -r requirements.txt
:requirements.txt
파일의 패키지 설치uv pip install -r requirements.txt
비활성화된 상태에서 (특정 가상 환경에 설치):
uv pip install -p ./.venv requests
:.
대신--python
또는-p
옵션을 사용하여 특정 Python 실행 파일을 지정할 수도 있습니다.# .venv 가상환경에 requests 설치 (가상환경 활성화 안해도 됨)uv pip install -p ./.venv/Scripts/python.exe requests
pip
기존 사용:
활성화된 가상 환경 내에서:
pip install <패키지_이름>
: 단일 패키지 설치pip install requestspip install flask==2.3.0
pip install -r requirements.txt
:requirements.txt
파일의 패키지 설치pip install -r requirements.txt
비교:
- 핵심 차이:
uv
로 가상 환경을 생성했을 때 (특히--seed
옵션 없이), 가상 환경 내부에pip
실행 파일이 없을 수 있습니다. 이 경우,uv pip install
을 사용해야 합니다.uv pip install
은uv
자체가 패키지 설치를 담당하므로, 가상 환경 내부에pip
가 없어도 문제없이 작동합니다.- 만약
uv venv
로 생성된 가상 환경에서pip install
을 직접 호출하면, 의도치 않게 시스템 전역의pip
가 호출되어 패키지가 전역에 설치되거나 오류가 발생할 수 있습니다.
uv pip install
은pip install
보다 훨씬 빠릅니다. (특히 의존성이 복잡하거나 많은 패키지를 설치할 때)uv
는 패키지 캐싱을 효율적으로 관리하여 재설치 시 속도를 향상시킵니다.
2.3. 패키지 제거
uv
사용:
uv pip uninstall requests flask
pip
기존 사용:
pip uninstall requests flask
비교: 기능적으로 동일하지만 uv
가 더 빠를 수 있습니다.
2.4. 설치된 패키지 목록 보기
uv
사용:
uv pip freeze > requirements.txt # 설치된 패키지를 requirements.txt로 저장
pip
기존 사용:
pip freeze > requirements.txt
비교: 기능적으로 동일하지만 uv
가 더 빠를 수 있습니다.
2.5. 의존성 동기화 및 해결 (pip-tools
대체)
UV는 pip-tools
의 pip-compile
및 pip-sync
기능을 통합하여 제공합니다.
uv
사용:
-
requirements.in
파일 생성:# requirements.in requests flask
-
의존성 잠금 (
requirements.txt
생성):uv pip compile requirements.in -o requirements.txt- 이 명령은
requirements.in
에 명시된 상위 의존성과 그들의 모든 하위 의존성을 정확한 버전으로requirements.txt
파일에 기록합니다.
- 이 명령은
-
환경 동기화:
uv pip sync requirements.txt- 이 명령은
requirements.txt
에 명시된 패키지만 정확히 설치하고,requirements.txt
에 없는 패키지는 제거합니다.
- 이 명령은
pip-tools
기존 사용:
- **
requirements.in
파일 생성 (동일) - 의존성 잠금 (
requirements.txt
생성):pip-compile requirements.in -o requirements.txt - 환경 동기화:
pip-sync requirements.txt
비교:
uv
는pip-tools
의 기능을 내장하여 별도의 설치 없이 사용할 수 있습니다.uv pip compile
및uv pip sync
는pip-compile
및pip-sync
보다 훨씬 빠르고 효율적입니다.- 의존성 해결 알고리즘도 개선되어 더 안정적인 의존성 그래프를 생성할 수 있습니다.
2.6. Python 버전 관리 (실험적 기능)
UV는 pyenv나 conda처럼 Python 버전을 설치하고 관리하는 기능도 실험적으로 제공합니다.
uv python list # 설치된 Python 버전 목록
uv python find 3.10 # 특정 Python 버전의 경로 찾기
주의: 이 기능은 아직 uv
의 초기 단계에 있으며, 모든 환경에서 완벽하게 작동하지 않을 수 있습니다.
03. UV와 PIP 비교
결론
uv
는 Python 패키지 관리를 위한 차세대 도구로, 기존 pip
와 venv
의 단점(느린 속도, 복잡한 워크플로우)을 보완하고 더 나은 사용자 경험을 제공합니다. 특히 대규모 프로젝트나 CI/CD 환경에서 빠른 속도는 엄청난 이점으로 작용합니다.
uv
로 새로운 프로젝트를 시작하거나, 기존 프로젝트를 uv
로 전환하여 사용해 보는 것을 강력히 추천합니다. 처음에는 uv pip install
과 같이 명령어가 약간 다르게 느껴질 수 있지만, 그 효율성과 편리함에 곧 익숙해지실 겁니다.
기타 참고
uv
로 가상 환경을 생성할 때 파이썬 버전을 지정하지 않으면, uv
는 다음과 같은 방식으로 파이썬 인터프리터를 찾아서 사용합니다:
1. uv venv
시 파이썬 버전 지정하지 않을 경우
uv
는 기본적으로 시스템에서 찾을 수 있는 가장 최신 버전의 Python을 사용하여 가상 환경을 생성합니다.
- 탐색 순서 (일반적인 경우):
- 현재 작업 디렉토리 또는 부모 디렉토리에 있는
.python-version
파일에서 지정된 버전이 있는지 확인합니다. - 시스템 PATH에 있는 Python 실행 파일 중
uv
가 인식하는 가장 최신 버전을 사용합니다. - 만약 시스템에 적합한 Python 버전이 없다면,
uv
가 자동으로 최신 Python 버전을 다운로드하여 관리되는 Python 버전으로 설치하고 이를 사용하여 가상 환경을 생성할 수 있습니다. (uv
의python-downloads
설정에 따라 달라짐)
- 현재 작업 디렉토리 또는 부모 디렉토리에 있는
간단히 말해, 명시적으로 지정하지 않으면 uv
는 "가장 최신 버전의 파이썬"을 선호한다고 생각하시면 됩니다.
2. 특정 파이썬 버전으로 가상 환경 생성하는 방법
특정 파이썬 버전으로 가상 환경을 생성하려면 uv venv
명령어에 --python
(또는 -p
) 옵션을 사용하면 됩니다.
기본 형식:
예시:
-
특정 주 버전(Major version) 지정:
uv venv --python 3.11# 시스템에 Python 3.11이 있다면 이를 사용하고, 없다면 3.11의 최신 마이너 버전을 자동으로 다운로드하여 설치합니다.
-
특정 마이너 버전(Minor version)까지 정확히 지정:
uv venv --python 3.11.8# 정확히 Python 3.11.8을 찾거나 다운로드하여 사용합니다.
-
버전 범위 지정 (고급):
uv venv --python ">=3.10,<3.12"# Python 3.10 이상 3.12 미만의 버전 중 가장 적합한 버전을 찾아 사용합니다.
중요 사항:
- 자동 다운로드: 만약
--python
으로 지정한 버전이 시스템에 설치되어 있지 않다면,uv
는 해당 버전을 자동으로 다운로드하여 설치하고 가상 환경을 생성합니다. 이는pyenv
나conda
와 유사한uv
의 Python 버전 관리 기능 덕분입니다. .python-version
파일 활용: 프로젝트 루트에.python-version
파일을 생성하고 원하는 파이썬 버전을 기록해두면, 해당 디렉토리에서uv venv
명령어를--python
옵션 없이 실행해도uv
가 해당 파일에 명시된 버전을 사용합니다. 예: 이후# .python-version 파일 내용 3.10
uv venv
실행 시 Python 3.10으로 가상 환경이 생성됩니다. 여러 버전을 나열하면uv
는 목록에서 첫 번째로 찾은 버전을 사용하려고 시도합니다.
예시 시나리오:
프로젝트 A는 Python 3.9가 필요하고, 프로젝트 B는 Python 3.11이 필요하다고 가정해봅시다.
프로젝트 A (Python 3.9):
cd project_a
uv venv --python 3.9
# 이제 project_a/.venv 는 Python 3.9로 생성됩니다.
.venv\Scripts\Activate.ps1
uv pip install requests
프로젝트 B (Python 3.11):
cd project_b
uv venv --python 3.11
# 이제 project_b/.venv 는 Python 3.11로 생성됩니다.
.venv\Scripts\Activate.ps1
uv pip install flask
이처럼 uv
의 --python
옵션을 사용하면 프로젝트별로 필요한 파이썬 버전을 유연하게 지정하고 관리할 수 있습니다.
uv
나 python -m venv
와 같은 도구를 사용하여 가상 환경을 생성할 때, 두 가지 시나리오를 구분해서 이해하는 것이 중요합니다.1. 가상 환경 내부에 Python 인터프리터가 "링크"되거나 "복사"되는 경우 (기존 venv
의 기본 동작)
대부분의 경우 (특히 python -m venv
를 사용하거나 uv venv
가 시스템에 이미 존재하는 Python 버전을 사용할 때), 가상 환경은 실제로 시스템에 설치된 특정 Python 인터프리터를 "참조"하거나 필요한 파일만 "복사"하여 생성됩니다.
- 설치된 Python: 시스템 어딘가에 (예:
C:\Python39
또는C:\Users\YourUser\AppData\Local\Programs\Python\Python310
) 실제 Python 인터프리터가 설치되어 있습니다. - 가상 환경 생성:
uv venv
명령을 실행하면, 프로젝트 폴더 안에.venv
(또는 지정한 이름) 폴더가 생기고, 이 안에 자체적인Scripts
(Windows) 또는bin
(Linux/macOS) 폴더가 만들어집니다. 이 폴더 안에는 시스템의 Python 인터프리터를 가리키는 심볼릭 링크(바로가기)가 생성되거나, 필요한 핵심 실행 파일이 복사됩니다. - 패키지 설치: 가상 환경을 활성화하고 패키지를 설치하면, 이 패키지들은 모두 가상 환경 폴더 내의
Lib\site-packages
(Windows) 또는lib/pythonX.Y/site-packages
(Linux/macOS)에 저장됩니다.
이 시나리오에서 가상 환경 삭제 시:
- 가상 환경 폴더 (
.venv
)를 삭제하면, 그 안에 설치된 모든 패키지와 가상 환경 관련 파일(스크립트, 링크 등)은 함께 삭제됩니다. - 하지만 가상 환경이 참조했던 "시스템에 원래 설치되어 있던" 실제 Python 인터프리터는 그대로 남아 있습니다. 가상 환경은 그 Python을 활용한 것뿐이지, 독립적인 새 Python을 통째로 설치한 것이 아닙니다.
2. uv
가 Python 버전을 "관리되는 Python"으로 다운로드하고 설치하는 경우 (UV의 특정 기능)
uv
는 --python
옵션으로 특정 Python 버전을 지정했을 때, 만약 해당 버전이 시스템에 없다면 자신이 직접 해당 Python 버전을 다운로드하여 관리합니다.
uv
가 다운로드한 Python: 이 Python 버전은 일반적으로uv
의 캐시 디렉토리(예:C:\Users\YourUser\AppData\Local\uv\python-downloads
또는~/.cache/uv/python-downloads
) 내에 설치됩니다. 이것은 시스템 전체에 깔리는 Python과는 별개로uv
가 사용하는 Python입니다.- 가상 환경 생성:
uv
는 이 자신이 관리하는 Python을 사용하여 가상 환경을 생성합니다.
이 시나리오에서 가상 환경 삭제 시:
- 가상 환경 폴더 (
.venv
)를 삭제하면, 그 안에 설치된 모든 패키지와 가상 환경 관련 파일은 함께 삭제됩니다. uv
가 다운로드하여 캐시 디렉토리에 설치했던 "관리되는 Python"은 자동으로 삭제되지 않습니다.uv
는 이 Python 버전을 다른 가상 환경에서도 재사용할 수 있도록 유지합니다.uv
가 관리하는 Python 버전을 명시적으로 삭제하려면uv python uninstall <버전>
명령을 사용해야 합니다.
요약
따라서 "가상에 파이썬이 설치된다"는 표현은 가상 환경이 독립적인 파이썬 실행 환경을 제공한다는 의미에서 맞지만, 그 독립적인 환경을 구성하는 방식이 시스템 Python을 참조하는 방식일 수도 있고, uv
가 별도로 관리하는 Python을 사용하는 방식일 수도 있다는 점을 이해하시면 됩니다. 어느 쪽이든, 가상 환경 폴더 자체를 삭제하면 그 안에 설치된 패키지들은 모두 사라집니다.
댓글