uv is fantastic, but its package management UX is a mess
4 points by jesseb34r
4 points by jesseb34r
I always feel bad for poor PDM, which was poised to take the mantle of best Python packaging tool until uv showed up with an all-devouring VC-funded hype machine behind it.
Anyway, PDM has a pdm outdated command to show you out-of-date packages, and a pdm update command to let you update packages, and it lets you select the upgrade strategy when running update, or specify it per-package when adding a package, or configure a global option to specify your preferred strategy.
And yes, it can also install and manage multiple Python interpreters for you, and if you find yourself somehow in desperate need of a slightly faster resolution/install step you can even configure PDM to use uv as a resolver/installer.
Copying my comment here that I left on the orange site:
Note the lack of an upper bound
Since uv needs a singular resolution that's entirely intentional. In npm you can install diverging resolutions for different parts of the tree but that is not an option with Python. I had to make the same decision in Rye and there is just no better solution here.
If an upper bound were to be supplied you would end up with trees that can no longer resolve in practice. Some package ecosystems in Python even went as far as publishing overrides for old packages that got published with assumed upper bounds that ended up wrong.
Don't forget that you cannot know today if your package is going to be compatible or incompatible with a not yet released package.