Poetry vs uv: Faster Python Dependency Management in CI
uv (from Astral) is the newer, Rust-based challenger to Poetry - and in CI the speed difference is hard to ignore.
Both manage projects, resolve dependencies, and produce a lockfile. uv is written in Rust and optimizes aggressively for install speed; Poetry is the mature, widely-adopted standard.
| Poetry | uv | |
|---|---|---|
| Implementation | Python | Rust |
| Install/resolve speed | Good | Much faster (often 10x+) |
| Lockfile | poetry.lock | uv.lock |
| Python version management | No (separate tool) | Yes, can install Pythons |
| Maturity / ecosystem | Very mature | Newer, rapidly maturing |
In CI
uv resolves and installs dependencies far faster than Poetry, which shortens the slowest part of many Python pipelines. uv can also install and pin the Python interpreter itself, removing a separate setup step. Poetry remains a safe default with the largest body of existing docs, plugins, and team familiarity.
Migration effort
uv can import from a pyproject.toml and many teams adopt it incrementally (using uv as the installer while keeping their existing project layout). Test resolution carefully if you have complex constraints, since resolver behavior can differ.
The verdict
Want the fastest installs and built-in Python management: uv. Want the most mature, battle-tested ecosystem today: Poetry. uv is the one to evaluate if CI install time is your bottleneck.