uv – nowy menedżer pakietów, projektów i środowisk Python

Dobre strony programu Python uv

Page content

Python uv (wymawiane „ju-wi”) to nowoczesny, wydajny menedżer pakietów i projektów w języku Python, napisany w Rust. Został zaprojektowany jako gotowe rozwiązanie zastępujące tradycyjne narzędzia do zarządzania pakietami Python, takie jak pip, pip-tools, virtualenv, pipx i pyenv, z myślą o uproszczeniu i przyspieszeniu procesów rozwoju oprogramowania Python.

uv jest rozwijany przez firmę Astral, zespół stojący za popularnym linterem Python Ruff. Narzędzie to ma na celu rozwiązanie powszechnych problemów w ekosystemie Python, takich jak wolne instalacje, konflikty zależności i skomplikowane zarządzanie środowiskami, wykorzystując wydajność języka Rust oraz nowoczesną architekturę oprogramowania.

uv python ultra-violet spa

Kluczowe funkcje uv

  • Wyjątkowa szybkość: uv jest znacznie szybszy od tradycyjnych narzędzi – typowo 8–10 razy szybszy niż pip bez buforowania (cache), a z ciepłym buforem nawet 80–115 razy szybszy.
  • Wszystko w jednym: Łączy instalowanie pakietów, rozwiązywanie zależności, zarządzanie wirtualnymi środowiskami, zarządzanie wersjami Pythona, tworzenie szkieletów projektów oraz wykonywanie skryptów w jednym narzędziu.
  • Kompatybilność: Oferuje interfejs wiersza poleceń zgodny z pitem, co ułatwia przestawienie się na niego bez dużej krzywej uczenia się.
  • Solidne zarządzanie zależnościami: Zapewnia precyzyjne rozwiązywanie zależności i obsługę plików blokady (lockfile) dla powtarzalnych środowisk.
  • Automatyczne środowiska wirtualne: Tworzy i zarządza środowiskami wirtualnymi automatycznie, co zmniejsza potrzebę ręcznej konfiguracji.
  • Wsparcie wieloplatformowe: Działa na systemach macOS, Linux i Windows.
  • Instalacja samodzielna: Może zostać zainstalowany bez wymagania obecności Pythona lub Rusta, przy użyciu prostego instalatora lub polecenia curl.

uv vs poetry vs pdm vs pip performance comparison

Nadal masz wątpliwości, po co używać uv?

  • Wydajność: Dramatycznie skraca czas instalacji pakietów i rozwiązywania zależności.
  • Prostota: Ujednolica wiele narzędzi w jednym, upraszczając konfigurację i zarządzanie projektami.
  • Niezawodność: Dostarcza spójne, powtarzalne środowiska z czytelnymi komunikatami o błędach i mechanizmem rozwiązywania konfliktów.
  • Nowoczesne standardy: Wsparcie dla pyproject.toml do konfiguracji projektu, zgodne z obecnymi standardami pakietowania Pythona.

Przykłady zastosowań

Wypróbujmy coś ekscytującego!

  • Rozpoczęcie nowego projektu:
uv init myproject
cd myproject
uv add requests
uv run python script.py

Tworzy to katalog projektu, konfiguruje środowisko wirtualne, instaluje zależności i uruchamia skrypty w izolowanym środowisku.

  • Zarządzanie skryptami z zależnościami inline:
uv add --script script.py requests
uv run script.py

uv może zarządzać zależnościami dla skryptów w pojedynczym pliku, bez osobnych plików wymagań.

Porównanie z tradycyjnymi narzędziami

Funkcja uv pip/virtualenv Poetry
Szybkość Bardzo szybki Wolny Umiarkowany
Środowiska wirtualne Automatyczne Ręczne Automatyczne
Rozwiązywanie zależności Zaawansowane Podstawowe Zaawansowane
Zarządzanie wersją Pythona Tak Nie (wymaga pyenv) Nie
Obsługa pliku blokady Tak Nie (wymaga pip-tools) Tak
Wykonywanie skryptów Zintegrowane Nie Ograniczone

Jak zainstalować i zacząć korzystać z UV na moim systemie

Aby zainstalować i zacząć korzystać z uv na swoim systemie, wykonaj następujące proste kroki:

Instalacja

  1. Samodzielny instalator (zalecane)
    • Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh

Albo, jeśli wolisz wget:

wget -qO- https://astral.sh/uv/install.sh | sh
  • Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  • Określona wersja: Możesz zażądać konkretnej wersji, dodając ją do adresu URL, np. https://astral.sh/uv/0.7.15/install.sh.
  1. Alternatywa: instalacja przez pip (jeśli masz zainstalowany Python)
pip install uv

Uwaga: Ta metoda jest mniej zalecana do dostępu systemowego, chyba że wiesz, co robisz, ponieważ może zakłócić systemowe środowisko Pythona.

  1. Instalacja przez pipx (do izolowanej, użytkownikowej instalacji)
pipx install uv

Ta metoda jest czystsza dla globalnego dostępu, jeśli już używasz pipx.

Pierwsze kroki

Aby Sprawdzić Instalację – Uruchom:

uv

Powinieneś zobaczyć menu pomocy potwierdzające, że uv jest zainstalowany i gotowy do użycia.

Aby Utworzyć i Aktywować Środowisko Wirtualne

  • Utwórz venv:
uv venv test
  • Aktywuj je na Linux/macOS:
source test/bin/activate
  • Aktywuj je na Windows:
.\test\Scripts\activate

Teraz możesz użyć uv pip install do instalowania pakietów w tym środowisku.

Zainicjuj Nowy Projekt

uv init

Tworzy to pyproject.toml i .gitignore dla Twojego projektu.

Dodaj Zależności

Dodaj pakiet:

uv add

Aktualizuje to pyproject.toml i generuje/aktualizuje plik blokady.

Synchronizuj Zależności

Zainstaluj wszystkie zależności w Twoim środowisku:

uv sync

Albo użyj interfejsu zgodnego z pitem:

uv pip install

Zapewnia to, że wszystkie zależności zostaną zainstalowane zgodnie z Twoim plikiem blokady.

Uruchom Skrypty

Użyj:

uv run script.py

Automatycznie zarządza środowiskiem i zależnościami dla Twojego skryptu.

Integracja z powłoką (Opcjonalnie)

Dla płynniejszego przepływu pracy możesz dodać integrację z powłoką do swojego pliku .zshrc lub .bashrc, aby automatycznie aktywować domyślne środowisko wirtualne i zmapować pip na uv pip.

Po wykonaniu tych kroków będziesz miał uv zainstalowany i gotowy do zarządzania projektami Python z szybkością i łatwością.

Instalowanie konkretnych wersji Pythona

Możesz użyć uv, aby instalować i zarządzać konkretnymi wersjami Pythona dla swoich projektów.

  • Zainstaluj najnowszą stabilną wersję Pythona:
    uv python install
    
    To polecenie pobiera i instaluje najnowszą dostępną stabilną wersję Pythona.
  • Zainstaluj konkretną wersję:
    uv python install 3.12
    
    Instaluje to najnowszy wydanie łatkowe Pythona 3.12 (np. 3.12.3).
  • Zainstaluj dokładną wersję łatkową:
    uv python install 3.12.3
    
    Instaluje to dokładnie Pythona 3.12.3.
  • Zainstaluj wiele wersji:
    uv python install 3.9 3.10 3.11
    
    Instaluje to Pythona 3.9, 3.10 i 3.11.
  • Zainstaluj wersję pasującą do ograniczenia:
    uv python install '>=3.8,=3.11"
    
    Zmienia to wymagania dotyczące wersji Pythona w projekcie.

Dodatkowe uwagi

Automatyczne pobieranie: Domyślnie uv automatycznie pobierze i zainstaluje wymagane wersje Pythona, jeśli nie zostaną znalezione na Twoim systemie.

Systemowy Python: uv może istniejące instalacje Pythona, jeśli są obecne, lub możesz wymusić użycie systemowego Pythona za pomocą flagi --no-managed-python.

Aktualizacje: Możesz aktualizować wersje Pythona zarządzane przez uv do najnowszego wydania łatkowego za pomocą:

uv python upgrade 3.12

Albo zaktualizować wszystkie zainstalowane wersje:

uv python upgrade

Aktualizacje między wersjami drobnymi (np. z 3.12 na 3.13) nie są wspierane.

Podsumowując, uv oferuje elastyczne i potężne narzędzia do instalowania, zarządzania i używania konkretnych wersji Pythona w Twoich projektach.

Jak UV wykrywa dostępne interpretory Pythona na różnych systemach

UV wykrywa dostępne interprety Pythona na różnych systemach, sprawdzając zestaw dobrze zdefiniowanych lokalizacji i zapytując każdego kandydata o metadane wersji. Oto jak to działa:

  • Instalacje Pythona zarządzane przez UV:
    UV najpierw szuka w katalogu określonym przez zmienną środowiskową UV_PYTHON_INSTALL_DIR, gdzie przechowuje swoje własne, zarządzane wersje Pythona.
  • Systemowy PATH:
    Na macOS i Linux UV sprawdza pliki wykonywalne o nazwie python, python3 lub python3.x (gdzie x to numer wersji) w katalogach wymienionych w systemowym PATH. Na Windows szuka python.exe.
  • Lokalizacje specyficzne dla Windowsa:
    Na Windows UV sprawdza również rejestr Windowsa oraz interpretery Pythona z Microsoft Store, korzystając z wyniku polecenia py --list-paths.
  • Środowiska wirtualne:
    Jeśli aktywne jest lub określono środowisko wirtualne, UV sprawdza interpreter w tym środowisku pod kątem kompatybilności, zanim zacznie szukać w innych miejscach.
  • Zapytanie o metadane:
    Każdy znaleziony plik wykonywalny jest zapytywany o metadane wersji. Rozważane są tylko te pliki, które odpowiadają żądanej wersji (lub ograniczeniu wersji). Pliki niewykonywalne są ignorowane.
  • Preferencje i rozwiązania awaryjne:
    Domyślnie UV preferuje systemowe instalacje Pythona, ale można to zmienić za pomocą opcji, aby preferować wersje zarządzane lub używać wyłącznie wersji zarządzanych/systemowych. Jeśli nie zostanie znaleziony odpowiedni interpreter, UV może pobrać i zainstalować wymaganą wersję.

Ten solidny proces wykrywania zapewnia, że UV może niezawodnie lokalizować i używać poprawnego interpretera Pythona na różnych systemach operacyjnych i w różnych środowiskach.

Przydatne linki

Subskrybuj

Otrzymuj nowe wpisy o systemach, infrastrukturze i inżynierii AI.