uv - nowy menedżer pakietów, projektów i środowisk w Pythonie

Zalety Pythona uv

Page content

Python uv (czytane jako „you-vee”) to nowoczesny, wysokiej wydajności pakiet i menedżer projektów dla Pythona napisany w języku Rust. Jest zaprojektowany jako gotowy do użycia zamiennik tradycyjnych narzędzi do zarządzania pakietami Pythona, takich jak pip, pip-tools, virtualenv, pipx i pyenv, mając na celu uproszczenie i przyspieszenie przepływów pracy w tworzeniu aplikacji w Pythonie.

uv jest rozwijany przez Astral, zespół założycieli popularnego lintera Pythona Ruff, i został zaprojektowany w celu rozwiązania typowych problemów w ekosystemie Pythona – takich jak wolne instalacje, konflikty zależności i złożone zarządzanie środowiskami – wykorzystując wydajność Rusta i nowoczesną architekturę oprogramowania.

uv python ultra-violet spa

Główne cechy uv

  • Wyróżniająca się szybkość: uv jest znacznie szybszy niż tradycyjne narzędzia – zazwyczaj 8–10 razy szybszy niż pip bez cache, a nawet do 80–115 razy szybszy z użyciem ciepłego cache.
  • Wszystko w jednym narzędziu: łączy instalację pakietów, rozwiązywanie zależności, zarządzanie środowiskami wirtualnymi, zarządzanie wersjami Pythona, tworzenie szablonów projektów oraz wykonywanie skryptów w jednym narzędziu.
  • Kompatybilność: oferuje interfejs wiersza poleceń kompatybilny z pip, co ułatwia jego przyjęcie bez konieczności uczenia się nowego sposobu działania.
  • Zaawansowane zarządzanie zależnościami: zapewnia precyzyjne rozwiązywanie zależności i wsparcie dla plików lockfile, umożliwiające tworzenie powtarzalnych środowisk.
  • Automatyczne środowiska wirtualne: tworzy i zarządza środowiskami wirtualnymi automatycznie, zmniejszając konieczność ręcznego konfigurowania.
  • Wsparcie wielu platform: działa na macOS, Linux i Windows.
  • Instalacja samodzielna: może zostać zainstalowana bez konieczności posiadania Pythona lub Rusta, korzystając z prostego instalatora lub curl.

uv vs poetry vs pdm vs pip performance comparison

Nadal nie wiesz, dlaczego warto używać uv?

  • Wydajność: znacząco zmniejsza czas instalacji pakietów i rozwiązywania zależności.
  • Prostota: łączy wiele narzędzi w jedno, upraszczając konfigurację i zarządzanie projektami.
  • Nadmiernie niezawodność: zapewnia spójne, powtarzalne środowiska z wyraźnymi komunikatami o błędach i rozwiązywaniem konfliktów.
  • Nowoczesne standardy: obsługuje pyproject.toml do konfiguracji projektu, zgodnie z obecnymi standardami pakowania Pythona.

Przykładowe przypadki użycia

Zróbmy coś ciekawego!

  • Uruchamianie nowego projektu:
uv init myproject
cd myproject
uv add requests
uv run python script.py

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

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

uv może zarządzać zależnościami dla pojedynczych skryptów bez oddzielnych plików wymagań.

Porównanie z tradycyjnymi narzędziami

Funkcja uv pip/virtualenv Poetry
Szybkość Bardzo szybki Wolny Średni
Środowiska wirtualne Automatyczne Ręczne Automatyczne
Rozwiązywanie zależności Zaawansowane Podstawowe Zaawansowane
Zarządzanie wersjami Pythona Tak Nie (wymaga pyenv) Nie
Wsparcie dla plików lockfile Tak Nie (wymaga pip-tools) Tak
Wykonywanie skryptów Integrowane Nie Ograniczone

Jak mogę zainstalować i zacząć korzystać z UV na swoim systemie

Aby zainstalować i zacząć korzystać z uv na swoim systemie, wykonaj poniższe proste kroki:

Instalacja

  1. Instalator samodzielny (zalecany)
    • Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh

Lub, 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"
  • Konkretna wersja: Możesz żądać konkretnej wersji, dodając ją do 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: ten sposób nie jest zalecany do instalacji na całym systemie, chyba że wiesz, co robisz, ponieważ może zanieczyszczyć środowisko Pythona systemowe.

  1. Instalacja przez pipx (dla izolowanego, użytkownika-wide instalacji)
pipx install uv

Ten sposób jest czystszy w przypadku globalnego dostępu, jeśli już korzystasz z pipx.

Rozpoczęcie pracy

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 instalacji pakietów w tym środowisku.

Inicjalizacja nowego projektu

uv init

To tworzy pyproject.toml i .gitignore dla Twojego projektu.

Dodawanie zależności

Dodaj pakiet:

uv add

To aktualizuje pyproject.toml i generuje/aktualizuje plik lockfile.

Synchronizacja zależności

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

uv sync

Lub użyj interfejsu kompatybilnego z pip:

uv pip install

To zapewnia, że wszystkie zależności są zainstalowane zgodnie z Twoim plikiem lockfile.

Uruchamianie skryptów

Użyj:

uv run script.py

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

Integracja z powłoką (opcjonalnie)

Dla płynniejszego działania możesz dodać integrację z powłoką do swojego .zshrc lub .bashrc, aby automatycznie aktywować domyślne środowisko wirtualne i aliasować pip do uv pip.

Z tych kroków będziesz miał uv zainstalowany i gotowy do zarządzania swoimi projektami Pythona z prędkością i łatwością.

Instalowanie konkretnych wersji Pythona

Możesz użyć uv do instalowania konkretnych wersji Pythona i zarządzania nimi dla swoich projektów.

  • Instalacja najnowszej stabilnej wersji Pythona:
    uv python install
    
    To polecenie pobiera i instaluje najnowszą stabilną wersję Pythona dostępna.
  • Instalacja konkretnej wersji:
    uv python install 3.12
    
    To instaluje najnowszą wersję poprawkową Pythona 3.12 (np. 3.12.3).
  • Instalacja konkretnego numeru wersji poprawki:
    uv python install 3.12.3
    
    To instaluje dokładnie Pythona 3.12.3.
  • Instalacja wielu wersji:
    uv python install 3.9 3.10 3.11
    
    To instaluje Pythona 3.9, 3.10 i 3.11.
  • Instalacja wersji spełniającej warunek:
    uv python install '>=3.8,=3.11'
    
    To zmienia wymaganie wersji Pythona w projekcie.

Dodatkowe uwagi

Automatyczne pobieranie: Domyślnie uv automatycznie pobiera i instaluje wymagane wersje Pythona, jeśli nie znajdą się one na Twoim systemie.

Python systemowy: uv może używać istniejących instalacji Pythona, jeśli są obecne, lub możesz zmusić go do użycia Pythona systemowego za pomocą flagi --no-managed-python.

Aktualizacja: Możesz zaktualizować wersje Pythona zarządzane przez uv do najnowszej wersji poprawki za pomocą:

uv python upgrade 3.12

Lub zaktualizować wszystkie zainstalowane wersje:

uv python upgrade

Aktualizacja między wersjami mniejszymi (np. 3.12 do 3.13) nie jest obsługiwana.

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

Jak UV odkrywa dostępne interpretatory Pythona na różnych systemach

UV odkrywa dostępne interpretatory Pythona na różnych systemach, sprawdzając zestaw dobrze zdefiniowanych lokalizacji i konsultując każdy kandydat pod kątem jego metadanych wersji. Oto jak to działa:

  • Zarządzane instalacje Pythona:
    UV najpierw sprawdza katalog określony przez zmienną środowiskową UV_PYTHON_INSTALL_DIR, gdzie przechowuje własne zarządzane wersje Pythona.
  • Ścieżka systemowa:
    Na macOS i Linuxie UV sprawdza, czy istnieją pliki wykonywalne o nazwach python, python3 lub python3.x (gdzie x to numer wersji) w katalogach wymienionych w systemowej ścieżce. Na Windowsie sprawdza python.exe.
  • Lokalizacje specyficzne dla Windows:
    Na Windowsie UV sprawdza również rejestr Windows i interpretatory Pythona z Microsoft Store, korzystając z danych z py --list-paths.
  • Środowiska wirtualne:
    Jeśli aktywne jest środowisko wirtualne lub zostało określone, UV sprawdza kompatybilność interpretera w tym środowisku przed przeszukiwaniem innych lokalizacji.
  • Konsultacja metadanych:
    Każdy odkryty plik wykonywalny jest konsultowany pod kątem jego metadanych wersji. Tylko pliki wykonywalne, które odpowiadają żądanej wersji (lub warunkowi wersji) są brane pod uwagę. Niekompatybilne pliki są ignorowane.
  • Preferencje i awaryjne rozwiązanie:
    Domyślnie UV preferuje instalacje Pythona systemowe, ale możesz to zmienić za pomocą opcji, aby preferować zarządzane lub używać tylko zarządzanych/wersji systemowych. Jeśli nie zostanie znaleziony odpowiedni interpreter, UV może pobrać i zainstalować wymaganą wersję.

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

Przydatne linki