Thank god it has opinionated quirks that old timers dislike.

Otherwise we'd still be stuck in the complete dumpster fire that was the python packaging/venv we had for the previous 20 years.

[deleted]

Old timer here: uv is not the first opinionated tool to manage Python packaging. It is build learning from other tools right and wrongs. I now use uv for everything because its quirks are less disruptive than quirks from previous tools that I also tried and disliked for being a bit too much for a very small gain.

What you call "dumpster fire", I call "steps towards uv", maybe even better tools in the future.

The only major opinionated tools that were in use prior to uv were Conda, Pipenv and Poetry (- ignoring pip here, as it's mainly a package installer). None of them contributed towards PEP 518 (Conda significantly predated it, and Pipenv actively created a competing format even though the PEP already was accepted).

Most of the lessons that make uv good can be directly traced back to Cargo (which in turn can be traced back to Bundler). The main portions from the Python side that helped it have a good foundations were standards work (PEPs), none of which were driven by the people behind any of the three "major" package managers.

True, before UV the only way to package python was a container.

Yes. we switched from devcontainers to uv and the workflow is now much simpler and faster.

Poetry?

And pipenv, or just literally manually creating a venv. Uv didn't invent that, it's winning on speed mainly, and then capitalising on starting with a base that includes multiple general improvements in the Python ecosystem.

uv also installs the python version your project needs which is a huge pain in the ass if you use some old Linux distro with outdated python.

Like pyenv pioneered for python and nvm for node ? ;)

Years ago

Sure, but it's not a matter of capability but of low friction and sane defaults.

These things matter though a lot of developers don't seem to understand that.

In a uv project I can just git clone, cd, uv sync and I am ready to go. Nothing in the python ecosystem offered that before.

Yup, I ended up learning docker because Python packaging was such a dumpster fire.

I'll never forget the day I discovered that pip didn't do any dependency resolution. You had one job, and yet...

Until uv, I used docker to run python projects locally. Got so fed up with venvs and versions and slowness and lack of wheels and spending so much time mucking around with it when cloning or updating a repo.

Uv hasn't fixed all issues, but made it far less painful.

apt install …

When people all have these special needs they never show their code.