3 ms·
I remain baffled about these posts getting excited about uv’s speed. I’d like to see a real poll but I personally can’t imagine people listing speed as one of t
by andy99 10mo ago
I remain baffled about these posts getting excited about uv’s speed. I’d like to see a real poll but I personally can’t imagine people listing speed as one of the their top ten concerns about python package managers. What are the common use cases where the delay due to package installation is at all material?
Edit to add: I use python daily
- gordonhart 10mo ago`poetry install` on my dayjob’s monolith took about 2 minutes, `uv sync` takes a few seconds. Getting 2 minutes back on every CI job adds up to a lot of time saved
- pants2 10mo agoThe biggest benefit is in CI environments and Docker images and the like where all packages can get reinstalled on every run.
- toenail 10mo agoThe speed is nice, but I switched because uv supports "pip compile" from pip-tools, and it is better at resolving dependencies. Also pip-tools uses (used?) internal pip methods and breaks frequently because of that, uv doesn't.
- recov 10mo agoDocker builds are a big one, at least at my company. Any tool that reduces wait time is worth using, and uv is an amazing tool that removes that wait time. I take it you might not use python much as it solves almost every pain point, and is fast which feels rare.
- stavros 10mo agoI can run `uvx sometool` without fear because I know that it'll take a few seconds to create a venv, download all the dependencies, and run the tool. uv's speed has literally changed how I work with Python.
- quectophoton 10mo agoI wouldn't say without fear, since you're one typo away from executing a typo-squatted malicious package. I do use it on CI/CD pipelines, but I wouldn't dare type uvx commands myself on a daily basis.
- stavros 10mo agouvx isn't more risky than `pip install`, which is what I used before.
- pnt12 10mo agoBut with pip you only need to be careful on install - with uvx you need to be careful forever. I'm a big fan of uv, but don't like that part of uvx. (makes me wonder if a small wrapper can do this - safe uvx, or suvx for short)
- stavros 10mo agoI generally tend to let the shell autocomplete, so I don't type it out every time, but I see your point. If I use a program more than once or twice, I install it.
- rsyring 10mo agoAs a multi decade Python user, uv's speed is "life changing". It's a huge devx improvement. We lived with what came before, but now that I have it, I would never want to go back and it's really annoying to work on projects now that aren't using it.
- thraxil 10mo agoWorking heavily in Python for the last 20 years, it absolutely was a big deal. `pip install` has been a significant percentage of the deploy time on pretty much every app I've ever deployed and I've spent countless hours setting up various caching techniques trying to speed it up.
- SatvikBeri 10mo agoSetting up a new dev instance took 2+ hours with pip at my work. Switching to uv dropped the Python portion down to <1 minute, and the overall setup to 20 minutes. A similar, but less drastic speedup applied to docker images.
- techbruv 10mo agoAt a previous job, I recall updating a dependency via poetry would take on the order of ~5-30m. God forbid after 30 minutes something didn’t resolve and you had to wait another 30 minutes to see if the change you made fixed the problem. Was not an enjoyable experience. uv has been a delight to use
- pxc 10mo ago> updating a dependency via poetry would take on the order of ~5-30m. God forbid after 30 minutes something didn’t resolve and you had to wait another 30 minutes to see if the change you made fixed the problem I'd characterize that as unusable, for sure.
- patrick91 10mo agofor me it's being able to do `uv run whatever` and always know I have the correct dependencies (also switching python version is so fast)
- pseudosavant 10mo agoI avoided Python for years, especially because of package and environment management. Python is now my go to for projects since discovering uv, PEP 723 metadata, and LLMs’ ability to write Python.
- adammarples 10mo agoIt's annoying. Do you use poetry? Pipenv? It's annoying.
- IshKebab 10mo agoDo you still remain baffled after the many replies that people actually do like their tooling to be not dog slow like pip is?
- VorpalWay 10mo agoCI: I changed a pipeline at work from pip and pipx to uv, it saved 3 minutes on a 7 minute pipeline. Given how oversubscribed our runners are, anything saving time is a big help. It is also really nice when working interactivly to have snappy tools that don't take you out of the flow more than absolutely more than necessary. But then I'm quite sensitive to this, I'm one of those people who turn off all GUI animations because they waste my time and make the system feel slow.
- zahlman 10mo agoIt's not just about delays being "material"; waiting on the order of seconds for a venv creation (and knowing that this is because of pip bootstrapping itself, when it should just be able to install cross-environment instead of having to wait until 2022 for an ugly, limited hack to support that) is annoying. But small efficiencies do matter; see e.g. https://danluu.com/productivity-velocity/ https://danluu.com/productivity-velocity/.
- ExoticPearTree 10mo agoBuild jobs where you have a lot of dependencies. Those GHA minutes go brrrr.
- optionalsquid 10mo agoSpeed is one of the main reasons why I keep recommending uv to people I work with, and why I initially adopted it: Setting up a venv and installing requirements became so much faster. Replacing pipx and `uv run` for single-file scripts with external dependencies, were additional reasons. With nox adding uv support, it also became much easier and much faster to test across multiple versions of Python
- blibble 10mo agoconda can take an hour to tell you your desired packages are unsatisifiable saying that, other than the solver, most of what uv does is always going to be IO bound
- curiousgal 10mo agoPeople criticising conda's solver prove they haven't used it in years.
- optionalsquid 10mo agoYou can also use pixi[1] if you want conda with uv's solver, that does appears to be faster than the mamba solver. Though the main reasons I recommend pixi, are that it doesn't have a tendency to break random stuff due to polluting your environment by default, and that it does a much better job of making your environments reproducible, among another benefits [1] https://pixi.sh/ https://pixi.sh/
- morshu9001 10mo agoOne weird case where this mattered to me, I wanted pip to backtrack to find compatible versions of a set of deps, and it wasn't done after waiting a whole hour. uv did the same thing in 5 minutes. This might be kinda common because of how many Python repos out there don't have pinned versions in dependencies.txt.
- scotty79 10mo agoFor me speed was irrelevant however uv was the first Python project manger with tolerable ui that I encountered. I never before done any serious development in Python because I just refused dealing with venvs requirements.txt and whatever. When a script used a dependancy or another Python version I installed it system wide. uv is perfectly usable, borderline pleasent. But I'm sure the speed helps.
- riazrizvi 10mo agoProbably 90% of ppl commenting here are focused on managing their own Python installs and mostly don’t care about speed. uv seems to be designed for enterprise, for IT management of company wide systems, and this post is, I’m guessing, a little promotional astroturfing. For most of us, uv solves a low priority problem.
- nojs 10mo agoIt’s a major factor in build times for Django containers for example.
- VeejayRampay 10mo agoit is absolutely a huge deal, I suspect you work daily in python but with a small number of repositories that dont change too often
- BiteCode_dev 10mo agoThe golden rule to understand the success of uv is to remind yourself how big and diverse the python community is. Your context is only a tiny fraction of the contexts in which python is going to be executed. E.G: if you compare it to your machine, it's a different thing that if you compare it to a locked down corporate machines. I have clients that have Python setup so bad installing all deps for a project takes... 18 minutes. Those are not crazy projects either. It's just the context that is bad. And you won't be able to change the context. But we are in talk to change the package manager to uv. There are so many different setups that are different than yours. If you are a professional trainer, and you get a new group every week, having 12 people installing their env in a blink is a win. If you are a researcher and you want to download the top 100 pypi packages and attempt to install them, speed is a bliss. If you are a blogger and try a lot of new stuff for an article, it's great. If you are working at repl.io and you get millions of venv created every day, boy does that matter. If you are sysadmin in charge of deploying kub pods, you might be looking at serious savings. Etc. Speed affects many things: - CI runs - AI iterations - docker builds - isolated builds over multiple versions of python But it also unlocks some use cases. E.G: - uvx is great only because uv is fast. Because uv calls are virtually instants, using uvx feels like magic. - "uv run --with" exist only because overlaying a new venv on top of the other is basically free. And it's a killer feature. - You never create lock files in uv. Because the operation is transparently done in the background since it's so fast. I can't recall the last time I ran uv sync. Because uv run automatically call it, since it's so fast you don't notice. So you just skip the middle man and go straight to coding. I was a big proponent of "speed is not that important". Until I got speed. And then I realized I missed a lot, because they are things you just can't do if you are slow.
- roelschroeven 10mo agoI feel this is somewhat similar to something Linus Torvalds once said about the faster merges git brought to his workflow: "That's the kind of performance that actually changes how you work. It's no longer doing the same thing faster, it's allowing you to work in a completely different manner. That is why performance matters and why you really should not look at anything but git. Hg (Mercurial) is pretty good, but git is better." (in a talk he did at Google, of which I the I found the transcripts here: https://gist.github.com/dukeofgaming/2150263 https://gist.github.com/dukeofgaming/2150263) Sometimes making something much faster turns it from something you try to avoid, maybe even unconsciously, to something you gladly make part of your workflow. Since I started using uv I regularly create new venvs just for e.g. installing a package I'm not familiar with to try some things out and see if it fits my needs. With pip I would sometimes do that too, but not nearly as often because it would take too much time. Instead I would sometimes install the package in an existing venv, potentially polluting that project's dependencies. Or I use uvx to run tools that I would not consider using otherwise because of too much friction. I was skeptical at first too. It's not until you start using uv and experience its speed and other useful features that you fully get why so many people switch from pip or poetry or whatever to uv.
- linhns 10mo ago> I use Python daily This does not add anything to your argument, if you’re doing low velocity development and manage to remember all the best practices that ought to be followed, then fine. But if you have to do CI/CD like I have to, uv is a revelation. Just works out of the box and fast.