Two weeks ago, I published my article UV – I am (somewhat) sold. Since then, a lot has changed for me. I switched all my personal projects to uv from poetry. I have set up a plan how and when to convert our company projects to uv. I am a fan. (And I still hope that I don’t get stomped by the elephant.)
After my post, I received a lot of feedback and also found some interesting follow-ups, that I want to share with you.
Did uv solve XKCD #1987 Python Environment?
I have to agree with him. I never expected this to happen in 2024, but it did happen. After a full week with my new set-up, I have never looked back or missed anything from my Homebrew + pyenv + poetry based set-up. I created 5 new projects, launched two services and transformed a big project to the new workflow. Everything worked like a charm.
Background on Astral, Charlie Marsh and uv
Here is an exciting video interview by Bite Code! with Charlie Marsh, the creator of ruff and uv.
I also enjoyed the podcast episode of Talk Python my Michael Kennedy. He also made an interesting interview with Charlie Marsh.
The latter of the two links above mostly helped me to get rid of the elephant.
This week, Hynek shared his thoughts on uv and how he is using it. As always, the videos by Hynek are entertaining and packed with lots of information. I also like his differentiated view on the things combined with some bold statements. A must see!
Criticisms
Most people criticizing my radical approach to only using uv and totally ignoring the official Python installers mentioned the list of quirks Gregory published on his web page. Gregory develops the underlying standalone Python builds, that uv and other tools use. Most of these quirks are not relevant for me, and some I can’t reproduce so far.
- Backspace Key Doesn’t work in Python REPL
- Tcl/tk Support Files
- No Weak Symbols from Modern macOS on Python 3.8
- No tix on macOS
- No pip.exe on Windows
- Windows Static Distributions are Extremely Brittle
- Linking Static Library on macOS
- Use of libedit on Linux
- Static Linking of musl libc Prevents Extension Module Library Loading
- Static Linking of libX11 / Incompatibility with PyQt on Linux
- Missing libcrypt.so.1
- References to Build-Time Paths
Personally, I prefer to live with a list of quirks that don’t hit me instead of the situation described by XKCD #1987.
uv publish
Since my last post, Astral added support for publishing packages to PyPI. This is wonderful because it closes the last gap where I had to use a different tool instead of uv.