about

blog

Python packaging in Rust

Thanks to a blog post by Simon Willison, I learned about the open-source Python tooling by Astral. Coincidentally, I started looking into the Rust programming language a few days ago and was pleasantly surprised by Cargo.

uv — which is a Python package and project manager written in Rust — is a kind of “Cargo, for Python”. Looking at the highlights in uv’s README.md file, the tool sounds promising, and I fully intend to try it out soon. The demonstrations on their blog post are convincing, especially uvx and uv run:

With uv run, you don’t have to think about activating virtual environments, managing dependencies, or keeping your project up-to-date. It just works.

and, more importantly:

(⋯) it also adds features that are essential to local development but not covered by the standards, like relative paths and editable dependencies.

Astral also provides a Python linter and code formatter written in Rust, named ruff. I’m currently not using a dedicated linter; I’m just relying on my IDE and its built-in checks, but I might try adding ruff to my workflow.