Om over te stappen van pip naar uv installeer je de uv-binary en vervang je vervolgens je dagelijkse commando's een-op-een: uv venv in plaats van python -m venv, uv add in plaats van pip install, en uv run in plaats van een virtualenv handmatig activeren. uv is een enkele, in Rust geschreven tool van Astral (het team achter de Ruff-linter) die pip, virtualenv, pip-tools, pipx en pyenv samenbrengt in één commando, en volgens Astral's eigen benchmarks is het bij installaties met een warme cache 10-100x sneller dan pip. Deze gids behandelt de exacte commando's, een volledig pip-naar-uv-overzicht, hoe je een bestaand project migreert, en de gevallen waarin je beter nog niet kunt overstappen.
Wat is uv, en waarom overstappen van pip?
uv is een in Rust geschreven Python-package- en projectmanager die bedoeld is als één enkele vervanger voor een hele stapel oudere tools. De uv-documentatie omschrijft het als "een enkele tool die pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv en meer vervangt." De belofte is snelheid en samenbundeling: in plaats van te onthouden welke tool omgevingen aanmaakt, welke dependencies vastlegt en welke Python-versies beheert, gebruik je uv voor alles, en installaties die met pip tientallen seconden duurden zijn met een warme cache vaak binnen een seconde klaar.
De snelheid komt voort uit een parallelle downloader, een globale content-addressed cache die packages hard-linkt in plaats van ze opnieuw te downloaden, en een resolver die het dependency-rekenwerk sneller doet dan pip. Voor een los script is het verschil prettig; voor CI-pipelines en Docker-builds die bij elke run dependencies opnieuw installeren, stapelt het zich op tot echte minuten winst per build. Daarom groeide uv van een curiositeit in 2024 uit tot, volgens een developer-artikel uit 2026, de standaard Python-packagemanager voor nieuwe projecten.
uv installeren zonder je huidige setup te breken
uv wordt geïnstalleerd als een zelfstandige binary, dus het staat naast je bestaande Python en pip in plaats van ze te vervangen. Op macOS of Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Op Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Je kunt het ook via Homebrew (brew install uv), pipx of pip zelf halen. Draai na de installatie uv --version ter bevestiging, en later uv self update om te upgraden. Het installeren van uv raakt niets aan je systeem-Python, je bestaande virtualenvs of je globale pip, dus je kunt het project voor project in gebruik nemen en op elk moment terugrollen door simpelweg terug te gaan naar je oude commando's.
Het pip-naar-uv-overzicht van commando's
Het grootste deel van de migratie is spiergeheugen. Deze tabel koppelt de commando's die je al kent aan hun uv-equivalenten:
| Taak | pip / oude tool | uv-equivalent |
|---|---|---|
| Een virtuele omgeving aanmaken | python -m venv .venv | uv venv |
| Een dependency aan een project toevoegen | pip install requests | uv add requests |
| Installeren vanuit een requirements-bestand | pip install -r requirements.txt | uv pip install -r requirements.txt |
| Een dependency verwijderen | pip uninstall requests | uv remove requests |
| Exacte versies vastleggen | pip freeze > requirements.txt | uv lock (schrijft uv.lock) |
| De vastgelegde omgeving reproduceren | pip install -r requirements.txt | uv sync |
| Een script in de omgeving uitvoeren | source .venv/bin/activate && python app.py | uv run app.py |
| Een CLI-tool globaal installeren | pipx install ruff | uv tool install ruff |
| Een tool eenmalig uitvoeren, zonder installatie | pipx run black . | uvx black . |
| Een Python-versie installeren | pyenv install 3.12 | uv python install 3.12 |
| De Python-versie van het project vastpinnen | pyenv local 3.12 | uv python pin 3.12 |
De enige gewoonte die het waard is om af te leren is handmatig activeren. uv run resolvet en activeert automatisch de juiste omgeving, dus source .venv/bin/activate wordt optioneel. uv houdt ook een pip-compatibele interface aan onder uv pip voor de gevallen waarin je een bijna directe vervanger wilt zonder de volledige projectworkflow over te nemen.
Een bestaand project stap voor stap migreren
Voor een project dat momenteel een requirements.txt gebruikt, kost de overstap een paar minuten:
- Initialiseer uv in het project. Draai
uv initin de projectroot. Dit maakt eenpyproject.tomlaan (de moderne standaard om dependencies te declareren) zonder je code te overschrijven. - Importeer je bestaande dependencies. Draai
uv add -r requirements.txtom elk gepinde package uit het oude bestand in te lezen en vast te leggen inpyproject.toml, en het vervolgens te resolven en te installeren. - Commit de lockfile. uv schrijft
uv.lock, een platformoverstijgende lockfile die de volledige dependency-graaf vastpint. Commit zowelpyproject.tomlalsuv.lockzodat teamgenoten en CI exact dezelfde versies installeren. - Schakel je run-commando's om. Vervang
python script.pydooruv run script.py, en vervang in CI de pip-installatiestap dooruv sync --frozen(die faalt als de lockfile verouderd is, waardoor drift wordt opgemerkt vóór het deployen). - Verwijder de oude bestanden zodra alles groen is. Nadat CI slaagt op uv, kun je
requirements.txten eventuelerequirements-dev.txtverwijderen, en de dev-tools in plaats daarvan onderbrengen in een dependency-groep inpyproject.toml.
De Astral-projectengids documenteert elk van deze stappen in detail, inclusief hoe je optionele en dev-dependency-groepen structureert.
Python-versies beheren met uv (dag pyenv)
uv kan zelf Python-interpreters installeren en wisselen, en dat is de functie waarmee het pyenv overbodig maakt. uv python install 3.12 downloadt een zelfstandige build van CPython 3.12; uv python list laat zien wat er geïnstalleerd en beschikbaar is; en uv python pin 3.12 schrijft een .python-version-bestand zodat het project altijd die interpreter gebruikt. Volgens de Astral-gids voor Python-beheer installeert uv zelfs automatisch een vereiste Python-versie de eerste keer dat je een project draait dat die nodig heeft, zodat een nieuwe bijdrager een repo kan clonen en uv sync kan draaien zonder eerst apart Python te installeren. Dat ene gedrag verwijdert een van de meest voorkomende onboardingproblemen in Python-teams.
Scripts en tools uitvoeren: uv run en uvx
Twee commando's dekken het meeste dagelijkse werk. uv run voert een commando uit binnen de omgeving van het project, waarbij het die omgeving eerst aanmaakt of bijwerkt indien nodig, zodat uv run pytest altijd draait tegen de vastgelegde dependencies zonder activatiestap. uvx (afkorting voor uv tool run) draait een CLI-tool in een wegwerp-omgeving zonder het in je project te installeren, dus uvx ruff check . lint je code met Ruff, zelfs als Ruff geen projectdependency is. Voor tools die je voortdurend gebruikt zet uv tool install ruff ze permanent op je PATH, ter vervanging van pipx. uv ondersteunt ook inline scriptdependencies, zodat een script van één bestand zijn eigen requirements in een commentaarblok kan declareren en kan draaien met uv run script.py, waarbij uv ter plekke een tijdelijke omgeving bouwt.
Valkuilen en wanneer je nog niet moet overstappen
uv is snel en stabiel genoeg voor productie, maar het is eerlijk over het feit dat het pre-1.0 is: eind augustus 2026 is de nieuwste release 0.12.5, en het project heeft nog geen 1.0 uitgebracht. In de praktijk betekent dat af en toe breaking changes tussen minor-versies, dus pin je uv-versie in CI (uv publiceert hiervoor een GitHub Action en Docker-images) in plaats van altijd de nieuwste op te halen. Nog een paar dingen om af te wegen voordat je overstapt:
- Poetry- of PDM-teams. Als je project al Poetry gebruikt met een werkende
poetry.lock, is de opbrengst kleiner en de migratie ingewikkelder dan een simpele overstap vanuitrequirements.txt. Stap over wanneer de snelheid er voor jou toe doet, niet uit reflex. - conda / wetenschappelijke stacks. uv richt zich op het PyPI-ecosysteem. Als je afhankelijk bent van conda voor gecompileerde wetenschappelijke packages of niet-Python-dependencies, vervangt uv conda niet, en het mengen van de twee vereist zorgvuldigheid.
- Bedrijfsindex en mirrors. Wijs uv naar een privé-index met
UV_INDEX_URLof configuratie inpyproject.tomlvoordat je het uitrolt op een intern netwerk, op dezelfde manier als je pip zou configureren. - De lockfile is niet optioneel. De reproduceerbaarheidswinst komt alleen tot stand als je
uv.lockcommit enuv sync --frozenin CI gebruikt. Dat overslaan laat je niet beter af dan met losse pip-installaties.
Gebruik het eerst op een nieuw bijproject, ervaar de snelheid, en breng het daarna naar je hoofdrepo's. Als je je builds containeriseert, versterkt het combineren van uv met een slanke base-image de winst, volgens dezelfde reproduceerbaarheidslogica achter onze Podman vs Docker-analyse, en het is de moeite waard om op te zetten naast een schone git worktrees-workflow voor parallelle branches. Teams die builds headless automatiseren willen het ook in elke scripted CI- of agent-pipeline.
Veelgestelde vragen
Hoe draai ik een Python-bestand met uv?
Gebruik uv run app.py. uv resolvet de dependencies van het project, maakt de virtuele omgeving aan of werkt die bij indien nodig, en draait het bestand daarbinnen, zodat je de omgeving nooit handmatig hoeft te activeren. Voor een eenmalige tool gebruik je uvx <tool> om het in een tijdelijke omgeving te draaien.
Moet ik mijn venv nog steeds activeren met uv?
Nee. uv run en uv sync werken automatisch op de .venv van het project. Je kunt nog steeds source .venv/bin/activate gebruiken als je een traditionele shell-sessie verkiest, en uv venv maakt een standaard virtualenv aan die op dezelfde manier activeert, maar activeren is optioneel voor normaal werk.
Is uv veilig om in productie te gebruiken? uv wordt in 2026 op grote schaal in productie gebruikt en wordt ondersteund door Astral, maar het is nog steeds pre-1.0 (0.12.5 op het moment van schrijven), dus pin een exacte uv-versie in CI en lees de changelog voordat je upgradet. De Python-builds die het installeert zijn zelfstandige CPython-distributies, geen aangepaste forks.
Hoe gebruik ik uv Python in VS Code?
Draai uv sync om de .venv aan te maken, open vervolgens in VS Code het commandopalet, kies "Python: Select Interpreter" en selecteer de interpreter in de .venv-map van je project. VS Code gebruikt dan uv's omgeving voor het draaien, debuggen en linten.
Sources
- Astral — uv-documentatie: de benchmark "10-100x sneller dan pip" en de lijst met tools die uv vervangt.
- Astral — Gids voor werken aan projecten:
uv init,uv add, lockfiles en dependency-groepen. - Astral — Python installeren en beheren: hoe uv Python-versies installeert en vastpint.
- astral-sh/uv releases (GitHub): huidige 0.12.x-versies en pre-1.0-status.
- Real Python — Python-projecten beheren met uv: een alles-in-één doorloop van de uv-workflow.
- DEV — Waarom uv de standaard Python-packagemanager werd in 2026: context over de adoptie en de snelheidsrationale.
Waqas Ahmed Waseer
Waqas Ahmed Waseer is ontwikkelaar en automation-builder met meer dan 8 jaar ervaring in het bouwen van productiesystemen die door 100.000+ mensen worden gebruikt. Hij bouwt custom multi-tenant SaaS, AI-automatisering (n8n, LLM-workflows, WhatsApp-bots) en hostinginfrastructuur (WHM/cPanel, CloudLinux) — en is de maker van WaSphere, FlowMaticX en het hostingmerk WaseerHost. 100+ projecten opgeleverd voor mkb, bureaus en gefinancierde startups.



