Description
I ideally dont .venv/ folders cluttering my project folders (not the least because they may not be safe to move, at least with venv
)
In my personal (also rust) workflow tool (that i'd love to not have to maintain if uv
could arrive at some of the same decisions 😆) there is a setting which when set to "central" puts all venvs in $XDG_DATA_HOME/<toolname>/...
, and the path to the venv is determined by mirroring the path to the project. That is, ~/foo/bar/baz/pyproject.toml
-> $XDG_DATA_HOME/uv/foo/bar/baz/.venv/
.
By comparison to more traditional tools, poetry
also (by default) will automatically create venvs in a central location. Although it puts all venvs in the same folder using a somewhat inscrutable hash to disambiguate projects of the same name.
This ^ feature sort of implies a few other mostly separate features in order to be useful:
uv activate
(because it becomes impractical to self-activate, except by copy-pasting the path that gets printed)- which then implies some
uv self init --shell zsh
(or whatever), that gives you the shell integration to automatically activate through the CLI itself. uv venv --delete
or-d