-
Notifications
You must be signed in to change notification settings - Fork 2
Mise
Randy Syring edited this page Sep 21, 2025
·
7 revisions
Mise is used for at least:
- Dev tools: Python, Node, Terraform, etc.
- Static Environment variables
- Python venv activation and creation using uv
- See also Mise: Python Cookbook
- Tasks: scripts used to manage the project that, usually, need the project's tooling and/or environment setup to function correctly
Coppy projects assume mise and uv are installed on a developer's host system
We recommend installing both mise and uv directly for your OS user account.
We no longer recommend installing uv through mise as uv should be available as a tool without going through mise to get access.
Given the frequency of releases to mise and uv, we recommend updating them frequently. See our systemd folder for service and timer units that update these tools nightly.
# mise
❯ mise self-update
❯ mise up
❯ mise reshim
# Keep mise & uv Pythons in-sync with:
❯ mise sync python --uv
# uv
❯ uv self update
❯ uv tool upgrade --all
By default, the project's venv will be located in the project directory at .venv.
You can use centralized virtualenvs by ensuring a cache directory exists: ~/.cache/uv-venvs/.
E.g.:
mkdir ~/.cache/uv-venvs/
Mise tasks can use a uv shebang so they can function without mise being active. But:
- This won't work if using centralized virtualenvs b/c UV_PROJECT_ENVIRONMENT is activated by
mise. So when the script runs, it will want to use
.venv. - A workaround, until uv gets support for centralized
venvs, is to symlink
.venvto the central one.
- Smooth integration between mise & uv is a high priority
- Our repos will operate as uv projects including
defining requirements in
pyproject.tomland usinguv.lock - Developers will manually run
uv syncto update the, presumably mise activated, active virtualenv