Dev & Open Source

Overstappen van pip naar uv in 2026: een praktische migratiegids

Zo stap je over van pip naar uv: installeer de binary en vervang vervolgens pip install door uv add, python -m venv door uv venv en python door uv run. Compleet overzicht van commando's, migratiestappen en de valkuilen die bepalen wanneer je beter niet kunt overstappen.

Waqas Ahmed Waseer
Waqas Ahmed Waseer 25 aug 2026 9 min leestijd
Overstappen van pip naar uv in 2026: een praktische migratiegids

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:

Taakpip / oude tooluv-equivalent
Een virtuele omgeving aanmakenpython -m venv .venvuv venv
Een dependency aan een project toevoegenpip install requestsuv add requests
Installeren vanuit een requirements-bestandpip install -r requirements.txtuv pip install -r requirements.txt
Een dependency verwijderenpip uninstall requestsuv remove requests
Exacte versies vastleggenpip freeze > requirements.txtuv lock (schrijft uv.lock)
De vastgelegde omgeving reproducerenpip install -r requirements.txtuv sync
Een script in de omgeving uitvoerensource .venv/bin/activate && python app.pyuv run app.py
Een CLI-tool globaal installerenpipx install ruffuv tool install ruff
Een tool eenmalig uitvoeren, zonder installatiepipx run black .uvx black .
Een Python-versie installerenpyenv install 3.12uv python install 3.12
De Python-versie van het project vastpinnenpyenv local 3.12uv 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:

  1. Initialiseer uv in het project. Draai uv init in de projectroot. Dit maakt een pyproject.toml aan (de moderne standaard om dependencies te declareren) zonder je code te overschrijven.
  2. Importeer je bestaande dependencies. Draai uv add -r requirements.txt om elk gepinde package uit het oude bestand in te lezen en vast te leggen in pyproject.toml, en het vervolgens te resolven en te installeren.
  3. Commit de lockfile. uv schrijft uv.lock, een platformoverstijgende lockfile die de volledige dependency-graaf vastpint. Commit zowel pyproject.toml als uv.lock zodat teamgenoten en CI exact dezelfde versies installeren.
  4. Schakel je run-commando's om. Vervang python script.py door uv run script.py, en vervang in CI de pip-installatiestap door uv sync --frozen (die faalt als de lockfile verouderd is, waardoor drift wordt opgemerkt vóór het deployen).
  5. Verwijder de oude bestanden zodra alles groen is. Nadat CI slaagt op uv, kun je requirements.txt en eventuele requirements-dev.txt verwijderen, en de dev-tools in plaats daarvan onderbrengen in een dependency-groep in pyproject.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 vanuit requirements.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_URL of configuratie in pyproject.toml voordat 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.lock commit en uv sync --frozen in 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

Waqas Ahmed Waseer

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.

Gerelateerd

Meer in Dev & Open Source

Bekijk alles

Discussie · 0

Wees vriendelijk. Reacties zijn openbaar.

    Nieuwsbrief · Maandageditie

    De maandagbriefing.

    Eén e-mail elke maandagochtend. De week vooruit in AI, startups, hosting en devtools — geen onzin, geen gesponsorde lokkertjes.

    Gratis. Met één klik uitschrijven.