Virtual environments are an incomplete solution at best. In particular, they really don't help much with the use case of wanting to install a tool: if you're installing a tool and not just setting up a development environment for working on a specific project with its dependencies, then you probably want to make that tool usable without activating its venv. The virtual environment capabilities shipped with Python itself don't really have any affordances for that.
uvx / uv tool works great for that.
You can `uv tool install your_package`, add a dir to your PATH, and then you can launch the tool appropriately, with it installed in its own venv
I don't get it. Then you just install the tool outside of venv? then it's installed for your user account.
But then all the tool's dependencies have to play nice with the dependencies of all your other unrelated Python-based tools.
One thing you can do (I'm not saying it's user friendly) is set up the tool in a virtualenv and then set up an alias like
That requires you to be running the right version of python at the system level, and for all your installed tools to have compatible package versions. It doesn't work very often for me