The only reason it isn't "usable" is because the wrapper script isn't on your system's path. Unless your tools actually depend on venv-related environment variables being set (for example, because they make subprocess calls and assume that `'python'` will use the currently running Python when they should correctly be using `sys.executable`), which IMX is very rare, you don't ever actually have to activate a venv to do anything with it. In particular, you don't need to activate it to use its REPL; you can instead directly specify the path to its Python executable.
The missing affordance basically looks like `ln -s path/to/venv/bin/tool ~/.local/bin`. Which is a big part of what Pipx does for you. (And once I realized that, I started using Pipx's vendored shared copy of pip: https://zahlman.github.io/posts/2025/01/07/python-packaging-...)
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
$ virtualenv ~/venv/yt-dlp
$ . ~/venv/yt-dlp/bin/activate
$ pip install yt-dlp
$ ln -s ~/venv/yt-dlp/bin/yt-dlp ~/bin/yt-dlp
$ deactivate
$ yt-dlp ...(And you didn't handle getting an appropriate version of python installed.)
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
alias foo-tool=/home/blah blah/tools/something/env/bin/python -m foo-tool