Пару дней назад я открыл для себя mise (произносится как «meez»). Это универсальный менеджер версий инструментов, похожий на asdf или pyenv, а также менеджер окружения, как direnv, который отличается высокой скоростью работы, надёжностью, декларативной конфигурацией и таким же удобством использования, как у cargo.
Я отказался от hatch, который ранее использовал исключительно для загрузки Python из python-build-standalone с помощью команды hatch python install all --update. Я также перестал использовать Node из Homebrew и удалил собственные скрипты из dotfiles, которые синхронизировали установки pipx между рабочим и личным ноутбуками.
Мой ~/.config/mise/config.toml теперь выглядит так:
[tools]
python = ["3.12", "3.11", "3.10", "3.9", "3.8"]
node = "lts"
usage = "latest" # требуется самим mise
"pipx:maturin" = "latest"
"pipx:poetry" = "latest"
"pipx:pypi-command-line" = "latest"
"pipx:watchfiles" = "latest"
[settings]
experimental = true # бэкенд pipx находится в экспериментальном режимеКроме того, я начал использовать функцию управления окружением от mise. Файл .mise.local.toml с переменными окружения, специфичными для компании, я разместил в директории с рабочими репозиториями:
[env]
PIP_INDEX_URL = "..."
CERT_PATH = "..."
GITLAB_TOKEN = "..."
...Пока что всё работает отлично.