Skip to content

mise+uvを前提にPythonの仮想環境を作成するスクリプト

以前にPython で venv & direnv を設定するスクリプトというメモを書きました。このスクリプトに関して以下の点を修正しました。

  1. mise use 〜部分が意図した通りに動作していなかったものを修正
  2. Pythonのバージョンを指定できるように修正(デフォルトは3.13.9)

taskfileの内容は好みで修正します。

検証環境

対象 バージョン
mise 2025.11.11 linux-x64 (2025-11-30)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/env bash

PYVER=3.13.9

while getopts p-: opt; do
  optarg="${!OPTIND}"
  [[ "$opt" = - ]] && opt="-$OPTARG"

  case "-$opt" in
    -p|--python)
      PYVER=$optarg
      ;;
    --)
      break
      ;;
    -\?)
      exit 1
      ;;
    --*)
      echo "$0: illegal option -- ${opt##-}" >&2
      exit 1
      ;;
  esac
done

# Python
mise use python@${PYVER}
mise exec python@${PYVER} -- 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 .

  mbuild:
    aliases: [mb]
    desc: MkDocs Build
    cmds:
      - mkdocs build --clean

  mserve:
    aliases: [ms]
    desc: MkDocs Serve
    cmds:
      - mkdocs serve

  test:
    aliases: [t]
    desc: Test
    cmds:
      - pytest .

  zbuild:
    aliases: [zb]
    desc: Zensical Build
    cmds:
      - zensical build --clean

  zserve:
    aliases: [zs]
    desc: Zensical Serve
    cmds:
      - zensical build --clean
      - zensical serve
EOL