Remix.run Logo
dboreham 2 days ago

People say uv is good because it's fast, but honestly I don't care about that. We switched to using it for distribution of our Python-based tools because it makes it very convenient to install directly from a git repository and then to subsequently update from same repository. No need to build a package.

nchammas 2 days ago | parent | next [-]

Maybe I've misunderstood you, but that's not a special advantage of uv. pip has been able to do this for many years.

    pip install git+https://github.com/some-org/repo
2 days ago | parent [-]
[deleted]
maeln 2 days ago | parent | prev | next [-]

For me, the speed is the least interesting part of `uv`. What I like about it is what it bundle into a single bin : Managing installed python version, automatically creating local .venv for the project (I don't like software like pipenv who install the venv who knows where in a global directory of their choosing), support of pyproject.toml, including of the python version declared in it, and running script with dependencies.

None of it is unique to `uv` I believe, but it does it all, reliably, is easy to install, and easy to use. In terms of DX, for my use cases, it beat poetry, pipenv, pyenv (for python version management) and just using pip

BrokenCogs 2 days ago | parent [-]

For a uv noob like me: what do you mean by bundling it all into a single binary? How does that work?

MayeulC 2 days ago | parent | next [-]

UV can be built (or downloaded) as a single optionally statically linked with the libc executable file, with no other dependencies. That makes it very easy to distribute on weird systems.

2 days ago | parent | prev [-]
[deleted]
Neywiny 2 days ago | parent | prev | next [-]

I tried it out successfully for the first time the other day (had 1 false start some months ago). This is after 10 ish years of system wide installs or venvs. I didn't find it fast at all. Every time I went to run the script it spent multiple seconds checking dependencies. Then one time it updated one, which luckily didn't break anything but I did get concerned. I'm sure there're some flags I didn't know to use but uvx was not great. On the other hand, it did seem to install the packages faster than pip.

nmstoker 2 days ago | parent | next [-]

YMMV depending on specific needs but generally even on Windows on an average machine with an imperfect setup I've found it exceptionally fast, often well inside the sub-second range, to the point that I do sometimes worry if it really ran.

Sounds like it's worth another look at your settings to make sure they are right.

coldtea 2 days ago | parent | prev | next [-]

>I didn't find it fast at all.

Compared to what? Fast is relative. Compared to pip it's miles ahead.

Neywiny 2 days ago | parent [-]

Compared to just running the script with system-wide installs or in a venv, as I mentioned originally

2 days ago | parent [-]
[deleted]
intoXbox 2 days ago | parent | prev | next [-]

I do avoid uv run for this reason but it’s useful for managing python projects. The speed claims actually have a lot to do with efficient caching, and I run several projects on the same Python (patch) version with similar packages on the same system

zanie 2 days ago | parent | prev [-]

If you want to open an issue with verbose logs (`-vv`) I'd be happy to look into it. You can set `UV_LOG_CONTEXT=1` to emit timing information.

If you're running Python scripts, I'd recommend using `uv lock --script <path>` to generate a lockfile — we don't do that by default for scripts yet but that will avoid unexpected upgrades.

(I work on uv)

dimatura 2 days ago | parent | prev | next [-]

It's not such a big deal compared to pip for a typical python package, but a couple of use cases where the speed is a nice feature are tool running with uvx and inline dependencies in scripts - you'll still see something is installed the first time you run the tool/script, but usually it's fast enough to not notice.

One could also make a comparison to another popular tool, conda, which is glacially slow, but that would arguably be unfair since conda does things uv doesn't.

More generally, it's still a nice thing, though. It's just a little less friction. Even a few seconds slower can nudge you towards different behavior

apple1417 2 days ago | parent | prev | next [-]

I have never gotten the speed argument either. Yes it's noticeably faster - but in all my projects it's 1s vs 0.1s, not enough to make a meaningful difference. Even in their benchmarks, the worst number they ever give for pip is 7s [1] (and those numbers are 2+ years old, with python's improvements pip should be doing a little better now). I just can't say I've ever cared about installing dependencies, something you do once, taking 7s longer. Nor do I care how long CI takes, it running in the background is the point.

The one use I can give it is for running scripts with inline dependencies. I have found it a noticeable improvement over pipx there. But that's more due to needing to parse dependencies every single launch, if it's something I use regularly I end up just installing them normally instead, and it's faster than either.

[1] https://github.com/astral-sh/uv/blob/main/BENCHMARKS.md

stephenlf 2 days ago | parent | prev [-]

uv is the backbone of any modern Python library.

https://stephenlf.dev/blog/python-library-in-2026/

blactuary 2 days ago | parent [-]

This is exactly the kind of brief summary I was looking for to get my team more organized, thanks for this