mise + uv + ruff + task + mypy で Python 環境を構築する
以下のツールを組み合わせて Python 環境を構築する為の準備手順をメモしておきます。
| ツール | 対象 | 概要 |
|---|---|---|
| mise | なんでも | 各種ツールのバージョンマネージャ |
| Task | なんでも | タスクランナー |
| uv | Python | ライブラリを管理するパッケージマネージャ |
| Ruff | Python | 静的コード解析ツール |
| mypy | Python | 型チェックツール |
検証環境¶
| 対象 | バージョン |
|---|---|
| Ubuntu | 24.04.2LTS |
結論¶
mise のインストール¶
設定後はログアウト・ログインし直す等で設定変更を反映しておきます。
sudo apt update -y && sudo apt install -y gpg sudo wget curl &&
sudo install -dm 755 /etc/apt/keyrings &&
wget -qO - https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | sudo tee /etc/apt/keyrings/mise-archive-keyring.gpg 1> /dev/null &&
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=amd64] https://mise.jdx.dev/deb stable main" | sudo tee /etc/apt/sources.list.d/mise.list &&
sudo apt update &&
sudo apt install -y mise &&
echo 'eval "$(/usr/bin/mise activate bash)"' >> ~/.bashrc
Python + Task + uv + ruff のインストール¶
mise install python@latest &&
mise use -g python@latest &&
mise install task@latest &&
mise use -g task@latest &&
mise install uv@latest &&
mise use -g uv@latest &&
mise install ruff@latest &&
mise use -g ruff@latest &&
sudo tee /usr/local/bin/venv <<EOF
#!/usr/bin/env bash
mise use python@latest
uv venv .venv
cat << EOL >> mise.toml
[env]
_.python.venv = ".venv"
EOL
cat << EOL >> taskfile.yml
version: '3'
tasks:
default:
cmds:
- task --list
build:
aliases: [b]
desc: Build
cmds:
- pyinstaller build.spec
format:
aliases: [f]
desc: Format the source code
cmds:
- ruff format .
- ruff check . --fix
lint:
aliases: [l]
desc: Static analysis
cmds:
- ruff check .
- mypy .
test:
aliases: [t]
desc: Test
cmds:
- pytest .
EOL
EOF
sudo chmod 755 /usr/local/bin/venv
mise のインストール¶
apt で mise をインストールします。
sudo apt update -y && sudo apt install -y gpg sudo wget curl
sudo install -dm 755 /etc/apt/keyrings
wget -qO - https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | sudo tee /etc/apt/keyrings/mise-archive-keyring.gpg 1> /dev/null
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=amd64] https://mise.jdx.dev/deb stable main" | sudo tee /etc/apt/sources.list.d/mise.list
sudo apt update
sudo apt install -y mise
インストール後は mise を activate する為の設定を実施します。 設定後はログアウト・ログインし直す等で設定変更を反映しておきます。
Python + Task + uv + Ruff のインストール¶
Python、Task、uv、Ruff、各々を mise でインストールします。
mise install python@latest
mise use -g python@latest
mise install task@latest
mise use -g task@latest
mise install uv@latest
mise use -g uv@latest
mise install ruff@latest
mise use -g ruff@latest
mypy のインストール¶
現時点で mypy は mise のプラグインとして提供されていない為、uv tool でインストールします。
Python の仮想環境を作成するスクリプト¶
Python のプロジェクトごとに仮想環境を作成する手間を省く為にスクリプトを用意しておきます。 /usr/local/bin/venv を以下の内容で作成し、実行権限を付与しておきます。
#!/usr/bin/env bash
mise use python@latest
uv venv .venv
cat << EOF >> mise.toml
[env]
_.python.venv = ".venv"
EOF
cat << EOF >> taskfile.yml
version: '3'
tasks:
default:
cmds:
- task --list
build:
aliases: [b]
desc: Build
cmds:
- pyinstaller build.spec
format:
aliases: [f]
desc: Format the source code
cmds:
- ruff format .
- ruff check . --fix
lint:
aliases: [l]
desc: Static analysis
cmds:
- ruff check .
- mypy .
test:
aliases: [t]
desc: Test
cmds:
- pytest .
EOF
このスクリプトを実行後、task を実行すると以下のように登録されたタスクの一覧が表示されます。
# task
task: [default] task --list
task: Available tasks for this project:
* build: Build (aliases: b)
* format: Format the source code (aliases: f)
* lint: Static analysis (aliases: l)
* test: Test (aliases: t)
タスクには alias を設定してありますので、例えばソースコードのフォーマットを実施する場合は task format または task f と実行します。