PyPoetry/Concept/How to handle Monorepos in Poetry vs uv
Properties
How to handle Monorepos in Poetry vs uv
Overview
Context
Key Principles
- Declarative dependency list — every package declares real, version-bounded requirements (no local paths) so published wheels stay portable.
- Local override for dev — a monorepo needs a way to tell the installer “use the sibling folder, editable” without leaking that info to PyPI.
- Single source of truth — one lock file (uv) or one resolver invocation per project (Poetry) keeps CI deterministic.
Mechanism
Examples
Misconceptions
- “uv can’t do editable installs.”
It can — just not in the
[project.dependencies]table; use[tool.uv.sources]. - “Poetry can’t share one lock.”
True, each project has its own poetry.lock. uv’s unified lock is a design choice, not a limitation lift.
- “Overrides leak into published wheels.”
Both tools strip local paths automatically (
poetry build,uv build --no-sources).
- “uv can’t do editable installs.”
Related