uv - Nieuw Python-pakket, project- en omgevingsbeheerder

Goede dingen over Python uv

Inhoud

Python uv (uitgesproken als “you-vee”) is een moderne, hoogprestatie Python-pakket- en projectbeheerder geschreven in Rust. Het is ontworpen als een directe vervanging voor traditionele Python-pakketbeheer-tools zoals pip, pip-tools, virtualenv, pipx en pyenv, met als doel om Python-ontwikkelingsworkflows te vereenvoudigen en te versnellen.

uv wordt ontwikkeld door Astral, het team achter de populaire Python-linter Ruff, en is ontworpen om veelvoorkomende problemen in de Python-ecosysteem—zoals traag installeren, afhankelijkheidsconflicten en complexe omgevingsbeheer—te verminderen door gebruik te maken van de prestaties van Rust en moderne softwarearchitectuur.

uv python ultra-violet spa

Belangrijke functies van uv

  • Uitstekende snelheid: uv is aanzienlijk sneller dan traditionele tools—meestal 8–10x sneller dan pip zonder caching, en tot 80–115x sneller met een warme cache.
  • Al-in-één-tool: Combineert pakketinstallatie, afhankelijkheidsoplossing, virtuele omgevingsbeheer, Python-versiebeheer, projectopzet en scriptuitvoering in één tool.
  • Compatibiliteit: Biedt een pip-compatibele opdrachtregelinterface, waardoor het makkelijk te adopteren is zonder een hoge leercurve.
  • Robuuste afhankelijkheidsbeheer: Biedt nauwkeurige afhankelijkheidsoplossing en lockfile-ondersteuning voor herhaalbare omgevingen.
  • Automatische virtuele omgevingen: Creëert en beheert virtuele omgevingen automatisch, waardoor handmatige instellingen worden verminderd.
  • Cross-platform-ondersteuning: Werkt op macOS, Linux en Windows.
  • Standalone installatie: Kan worden geïnstalleerd zonder Python of Rust, met behulp van een eenvoudige installer of curl.

uv vs poetry vs pdm vs pip prestatievergelijking

Nog steeds onzeker waarom uv gebruiken?

  • Prestaties: Vermindert aanzienlijk de installatietijd van pakketten en afhankelijkheidsoplossing.
  • Eenvoud: Verenigt meerdere tools in één, waardoor projectopzet en beheer worden vereenvoudigd.
  • Betrouwbaarheid: Levert consistente, herhaalbare omgevingen met duidelijke foutmeldingen en conflictoplossing.
  • Moderne standaarden: Ondersteunt pyproject.toml voor projectconfiguratie, wat overeenkomt met huidige Python-pakketstandaarden.

Voorbeeldgebruik

Laten we iets spannends proberen!

  • Een nieuw project starten:
uv init myproject
cd myproject
uv add requests
uv run python script.py

Dit maakt een projectmap, stelt een virtuele omgeving in, installeert afhankelijkheden en voert scripts uit in een geïsoleerde omgeving.

  • Scripts beheren met inline-afhankelijkheden:
uv add --script script.py requests
uv run script.py

uv kan afhankelijkheden beheren voor enkelvoudige scriptbestanden zonder aparte requirementsbestanden.

Vergelijking met traditionele tools

Functie uv pip/virtualenv Poetry
Snelheid Zeer snel Traag Gemiddeld
Virtuele omgevingen Automatisch Handmatig Automatisch
Afhankelijkheidsoplossing Geavanceerd Basis Geavanceerd
Python-versiebeheer Ja Nee (vereist pyenv) Nee
Lockfile-ondersteuning Ja Nee (vereist pip-tools) Ja
Scriptuitvoering Geïntegreerd Nee Beperkt

Hoe installeer en gebruik ik UV op mijn systeem

Om uv te installeren en te gebruiken op je systeem, volg dan deze eenvoudige stappen:

Installatie

  1. Standalone Installer (Aanbevolen)
    • Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh

Of, als je liever wget gebruikt:

wget -qO- https://astral.sh/uv/install.sh | sh
  • Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  • Specifieke versie: Je kunt een specifieke versie aanvragen door deze in de URL op te nemen, bijvoorbeeld https://astral.sh/uv/0.7.15/install.sh.
  1. Alternatief: Installeer via pip (als je Python hebt geïnstalleerd)
pip install uv

Opmerking: Deze methode wordt minder aanbevolen voor systeemwijde toegang tenzij je weet wat je doet, omdat het je systeem Python-omgeving kan verstoren.

  1. Installeer via pipx (voor geïsoleerde, gebruikersbreed installatie)
pipx install uv

Deze methode is netter voor globale toegang als je al pipx gebruikt.

Aan de slag

Om de installatie te controleren - Voer uit:

uv

Je ziet dan een helpmenu dat bevestigt dat uv geïnstalleerd en gereed is.

Om een virtuele omgeving te maken en activeren:

  • Maak een venv aan:
uv venv test
  • Activeer het op Linux/macOS:
source test/bin/activate
  • Activeer het op Windows:
.\test\Scripts\activate

Nu kun je uv pip install gebruiken om pakketten in deze omgeving te installeren.

Een nieuw project initialiseren

uv init

Dit maakt een pyproject.toml en .gitignore voor je project.

Afhankelijkheden toevoegen

Voeg een pakket toe:

uv add

Dit bijwerkt pyproject.toml en genereert/vernieuwt de lockfile.

Afhankelijkheden synchroniseren

Installeer alle afhankelijkheden in je omgeving:

uv sync

Of gebruik de pip-compatibele interface:

uv pip install

Dit zorgt ervoor dat alle afhankelijkheden volgens je lockfile worden geïnstalleerd.

Scripts uitvoeren

Gebruik:

uv run script.py

Dit beheert automatisch de omgeving en afhankelijkheden voor je script.

Shell-integratie (optioneel)

Voor een soepele workflow kun je shell-integratie toevoegen aan je .zshrc of .bashrc om automatisch een standaard virtuele omgeving te activeren en pip te aliasen naar uv pip.

Met deze stappen heb je uv geïnstalleerd en ben je gereed om je Python-projecten snel en gemakkelijk te beheren.

Specifieke Python-versies installeren

Je kunt uv gebruiken om specifieke Python-versies te installeren en deze te beheren voor je projecten.

  • Installeer de nieuwste stabiele Python-versie:
    uv python install
    
    Deze opdracht downloadt en installeert de meest recente stabiele Python-versie die beschikbaar is.
  • Installeer een specifieke versie:
    uv python install 3.12
    
    Dit installeert de nieuwste patchversie van Python 3.12 (bijvoorbeeld 3.12.3).
  • Installeer een exacte patchversie:
    uv python install 3.12.3
    
    Dit installeert precies Python 3.12.3.
  • Installeer meerdere versies:
    uv python install 3.9 3.10 3.11
    
    Dit installeert Python 3.9, 3.10 en 3.11.
  • Installeer een versie die overeenkomt met een beperking:
    uv python install '>=3.8,=3.11"
    
    Dit verandert de Python-versiebehoefte van het project.

Extra aandachtspunten

Automatische downloads: Standaard zal uv automatisch de benodigde Python-versies downloaden en installeren als ze niet op je systeem aanwezig zijn.

Systeem Python: uv kan bestaande Python-installaties gebruiken als deze aanwezig zijn, of je kunt het dwingen om systeem Python te gebruiken met de --no-managed-python vlag.

Upgrades: Je kunt uv-gemanagede Python-versies upgraden naar de nieuwste patchversie met:

uv python upgrade 3.12

Of upgrade alle geïnstalleerde versies:

uv python upgrade

Upgrades over minoren (bijvoorbeeld van 3.12 naar 3.13) worden niet ondersteund.

In samenvatting biedt uv flexibele en krachtige tools voor het installeren, beheren en gebruiken van specifieke Python-versies in je projecten.

Hoe ontdekt UV beschikbare Python-interpreters op verschillende systemen

UV ontdekt beschikbare Python-interpreters op verschillende systemen door een aantal goed gedefinieerde locaties te controleren en elke kandidaat te vragen naar zijn versie-metadata. Hier is hoe het werkt:

  • Gemanagede Python-installaties:
    UV kijkt eerst in de map die is opgegeven door de omgevingsvariabele UV_PYTHON_INSTALL_DIR, waarin het zijn eigen gemanagede Python-versies opslaat.
  • Systeem PATH:
    Op macOS en Linux controleert UV of er uitvoerbare bestanden zijn genaamd python, python3 of python3.x (waarbij x een versienummer is) in de mappen die zijn opgenomen in de systeem PATH. Op Windows zoekt het naar python.exe.
  • Windows-specifieke locaties:
    Op Windows controleert UV ook de Windows-registry en Microsoft Store Python-interpreters met behulp van de uitvoer van py --list-paths.
  • Virtuele omgevingen:
    Als een virtuele omgeving actief is of is opgegeven, controleert UV de interpreter in die omgeving op compatibiliteit voordat het elders zoekt.
  • Metadata-query:
    Elke ontdekte uitvoerbare bestand wordt gequeryd op zijn versie-metadata. Alleen uitvoerbare bestanden die overeenkomen met de gevraagde versie (of versiebeperking) worden overwogen. Niet-uitvoerbare bestanden worden genegeerd.
  • Voorkeur en fallback:
    Standaard prefereert UV systeem Python-installaties, maar je kunt dit aanpassen met opties om gemanagede of alleen gemanagede/systeemversies te gebruiken. Als er geen geschikte interpreter wordt gevonden, kan UV de benodigde versie downloaden en installeren.

Deze robuuste ontdekkingproces zorgt ervoor dat UV betrouwbaar de juiste Python-interpreter kan vinden en gebruiken op verschillende besturingssystemen en omgevingen.