A year of uv: pros, cons, and should you migrate

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

AppSignal knows why the f*#k it crashed.
Stop vibe-debugging. Every exception, every backtrace, grouped so you see patterns, not noise.
www.appsignal.com
sponsored
Kargo - Stop Scripting Promotions. Start Shipping with Kargo
Kargo automates promotion across dev, staging, and prod with approval gates and verification. Open source, built by the team behind Argo CD. Download now.
akuity.io
sponsored
  1. pixi

    Powerful system-level package manager for Linux, macOS and Windows written in Rust – building on top of the Conda ecosystem.

    Thanks for bringing up conda. We're definitely trying to paint this vision as well with `pixi` (https://pixi.sh) - which is a modern package manager, written in Rust, but using the Conda ecosystem under the hood.

    It follows more of a project based approach, comes with lockfiles and a lightweight task system. But we're building it up for much bigger tasks as well (`pixi build` will be a bit like Bazel for cross-platform, cross-language software building tasks).

    While I agree that conda has many short-comings, the fundamental packages are alright and there is a huge community keeping the fully open source (conda-forge) distribution running nicely.

  2. AppSignal

    AppSignal knows why the f*#k it crashed. Stop vibe-debugging. Every exception, every backtrace, grouped so you see patterns, not noise.

    AppSignal logo
  3. libuv

    Cross-platform asynchronous I/O

    I have seen references to using uv for Python package management before and been thoroughly confused. I never realized it was not the same thing as the very nice asynchronous cross-platform library libuv (https://libuv.org/) and I could never figure out what that library had to do with Python package management (answer: nothing).

    Maybe we need a Geographic Names Board to deconflict open source project names, or at least the ones that are only two or three characters long.

  4. Poetry

    Python packaging and dependency management made easy

    Did they run into a hard blocker, or was it just that using version overrides was possible but painful? I started looking seriously at uv/pdm once poetry made it entirely clear they didn't intend to support version overrides [1]. uv's support for overrides seems serviceable if unsophisticated [2][3].

    [1] https://github.com/python-poetry/poetry/issues/697

    [2] https://docs.astral.sh/uv/concepts/resolution/#dependency-ov...

    [3] https://docs.astral.sh/uv/reference/settings/#override-depen...

  5. nemo2riva

    NeMo -> Riva Conversion Tool

    A scenario for "don't use uv" I hope none of you encounter: many nvidia libraries not packaged up in something better like torch.

    Here's just one example, nemo2riva, the first in several steps to taking a trained NeMo model and making it deployable: https://github.com/nvidia-riva/nemo2riva?tab=readme-ov-file#...

    before you can install the package, you first have to install some other package whose only purpose is to break pip so it uses nvidia's package registry. This does not work with uv, even with the `uv pip` interface, because uv rightly doesn't put up with that shit.

    This is of course not Astral's fault, I don't expect them to handle this, but uv has spoiled me so much it makes anything else even more painful than it was before uv.

  6. uv2nix

    Uv2nix - Ingest uv workspaces using Nix [maintainer=@adisbladis]

  7. rye

    Discontinued a Hassle-Free Python Experience

    Rye is softly being sunset in favor of `uv` (though still officially supported). As it says on https://rye.astral.sh/,

    > If you're getting started with Rye, consider uv, the successor project from the same maintainers.

  8. direnv

    unclutter your .profile

    python -m pip install -r requirements.txt

    Looks like direnv can be extended to use uv:

    https://github.com/direnv/direnv/wiki/Python#uv

  9. Kargo

    Stop Scripting Promotions. Start Shipping with Kargo. Kargo automates promotion across dev, staging, and prod with approval gates and verification. Open source, built by the team behind Argo CD. Download now.

    Kargo logo
  10. miniforge

    A conda-forge distribution.

    conda (the package) is open source, it's the installer from Anaconda Corp (nee ContinuumIO) and their package index that are a problem. If you use the installer from https://conda-forge.org/download/, you get the conda-forge index instead, which avoids the license issues.

  11. sqlite-jdbc

    SQLite JDBC Driver

    Cross-platform Java apps do it to. For e.g., see https://github.com/xerial/sqlite-jdbc. But it does not become a clusterfuck like it does with python. After downloading gigabytes and gigabytes of dependencies repeatedly, the python tool you are trying to run will refuse to do so for random reasons.

    You cannot serve end users a shit-sandwich of this kind.

    The python ecosystem is a big mess and, outside of a few projects like uv, I don't see anyone trying to build a sensible solution that handles both speed/performance and packaging/distribution.

  12. paper

    PAPER - the Python Application, Package and Environment wRangler (by zahlman)

  13. freetype-py

    Python binding for the freetype library

    You can in fact use `dlopen`, via the support provided in the `ctypes` standard library. `freetype-py` (https://github.com/rougier/freetype-py) is an example of a project that works this way.

    To my understanding, though, it's less performant. And you still need a stable ABI layer to call into. FFI can't save you if the C code decides in version N+1 that it expects the "memory shared across the vm boundary" to have a different layout.

  14. Ammonite-Ops

    Scala Scripting

    Try Scala with an Ammonite script like https://ammonite.io/#ScalaScripts . The JVM ecosystem does dependencies right, there's no need to "pin" in the first place because dependency resolution is deterministic to start with. (Upgrading to e.g. all newer patch versions of your current dependencies is easy, but you have to make an explicit action to do so, it will never happen "magically")

  15. mise

    dev tools, env vars, task runner

    Just going to plug https://mise.jdx.dev as a perfect accompaniment to uv. It simplifies installing tooling across languages and projects. I even install uv via mise, and it uses uv under the hood for Python related things.

  16. uv

    An extremely fast Python package and project manager, written in Rust.

    They are currently in the process of creating their own build system: https://github.com/astral-sh/uv/issues/3957#issuecomment-265...

  17. hermit

    🐚 Hermit manages isolated, self-bootstrapping sets of tools in software projects. (by cashapp)

    I've been using Hermit to install uv, then pointing scripts at $REPO_ROOT/bin/uv. That gives you a repo where the scripts can be run directly after cloning (Hermit is smart enough to install itself if necessary).

    Unfortunately, Hermit doesn't do Windows, although I'm pretty sure that's because the devs don't have Windows machines: PRs welcome.

    https://github.com/cashapp/hermit

  18. scala-cli

    Scala CLI is a command-line tool to interact with the Scala language. It lets you compile, run, test, and package your Scala code (and more!)

    It defines a DSL for your build that looks roughly like Scala code. But… it’s not! And there is a confusing “resolution” system for build tasks/settings. It’s also slow as shit. See https://www.lihaoyi.com/post/SowhatswrongwithSBT.html for a comprehensive takedown. If you’re interested in just playing around with scala I would use

    https://scala-cli.virtuslab.org

    Or for larger projects, the thing the author of the linked article is plugging (mill).

  19. pex

    A tool for generating .pex (Python EXecutable) files, lock files and venvs.

    Is it not the same blurb every time that you could copy and paste?

    Or you can make sure you have an entry point - probably a better UX for your coworkers anyway - and run them through a `pipx` install.

    Or you could supply your own Bash script or whatever.

    Or since you could use a simple packager like pex (https://docs.pex-tool.org/). (That one even allows you to embed a Python executable, if you need to and if you don't have to worry about different platforms.) Maybe even the standard library `zipapp` works for your needs.

  20. botch

    An advanced Discord bot for World of Darkness and Chronicles of Darkness.

    Yes, the code is at https://github.com/tiltowait/botch

    I'm planning on asking on the Astral Discord server once I have some time to set aside to it.

    By "without it being a package", I mean that I don't have `src/foo`, which has `src/foo/__main__.py`, but e.g. `src/main.py`.

  21. packaging.python.org

    Python Packaging User Guide

    (On Windows, IIRC you get cookie-cutter compiled executables that read their own filename and use it to do the right thing, perhaps with a Python shim to do the import or something.)

    (Perhaps you'd be interested in raising the issue on https://github.com/pypa/packaging.python.org/issues ?)

  22. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • OpenAI to Acquire Astral

    3 projects | news.ycombinator.com | 19 Mar 2026
  • PYX: The next step in Python packaging

    12 projects | news.ycombinator.com | 13 Aug 2025
  • Introducing Quart: A Modern Alternative to Flask (with Async Support)

    1 project | dev.to | 14 Jul 2025
  • Open Source Malicious Packages: The Problem

    1 project | dev.to | 16 Jun 2025
  • Managing Python Deps with Poetry

    1 project | dev.to | 26 Feb 2025

Did you know that Python is
the 1st most popular programming language
based on number of references?