Last month, I wrote Python’s UV tool is actually pretty good about Astral’s new Python package installer and resolver uv, and this is a follow-up post.
Since last month, I have added uv to over a dozen projects, and I recently learned that you could skip the venv step for projects that use containers or CI where the environment is already isolated.
I mistakenly thought uv required a virtual environment (aka venv), but Josh Thomas recently pointed out that it’s unnecessary.
Curious what the motivation is for this tool. I can see how rust would be much faster at dependency resolution, but dependency resolution has never been a bottleneck for me while I’m doing either ops or software development. Why is that the thing that needed speeding up?
What I need from a Python package manager:
That’s it. Pip scratches that itch. I also use poetry for env management and pyproject.toml management, that’s it.
I have a pip-tools wrapper thing that now optionally uses uv instead. Aside from doing the pip-tools things faster, the main advantage I’ve found, and what really motivated me to support and recommend uv with it, is that uv creates new venvs MUCH faster than python’s venv module, which is really annoyingly slow for that operation.
My thoughts exactly. What I want is Poetry’s workflow and use of
pyproject.toml
baked into Python.