0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

mise で `deprecated [idiomatic_version_file_enable_tools]:` となったら

Last updated at Posted at 2025-05-09

mise を使ってる環境で python-version が存在するディレクトリへ移動した際に

mise WARN deprecated [idiomatic_version_file_enable_tools]:

を目にすることがあります。
特別な理由が無ければ

mise settings add idiomatic_version_file_enable_tools python

と指定しましょう。
これで以下の優先順位でバージョンが選択されます。

  1. ./mise.toml
  2. ./.python-version
  3. $HOME/.config/mise/config.toml

どういうことか

$ mise version
2025.5.2 linux-x64 (2025-05-07)

$ uv --version
uv 0.7.2

$ uv init python_app_dir
Initialized project `python-app-dir` at `/home/USER/python_app_dir`

$ ls python_app_dir/.python-version
python_app_dir/.python-version

$ cd python_app_dir/
mise WARN  deprecated [idiomatic_version_file_enable_tools]:
Idiomatic version files like ~/python_app_dir/.python-version are currently enabled by default. However, this will change in mise 2025.10.0 to instead default to disabled.

You can remove this warning by explicitly enabling idiomatic version files for python with:

    mise settings add idiomatic_version_file_enable_tools python

You can disable idiomatic version files with:

    mise settings add idiomatic_version_file_enable_tools "[]"

See https://github.com/jdx/mise/discussions/4345 for more information.

これは .python-version といった、ランタイムのバージョン指定ファイルが存在している時に mise が出力している WARN です。この背景は書いてある通りで

今は .python-version で指定されたランタイムのバージョンを有効化したよ。でも mise 2025.10.0 からは無視するよ。だから mise の idiomatic_version_file_enable_tools オプションを指定してね。

というものです。
具体的には、以下のどちらかを指定しましょうとなっています。

  1. mise settings add idiomatic_version_file_enable_tools python(ランタイム名)
  2. mise settings add idiomatic_version_file_enable_tools "[]"

実際の挙動と、今後困らないようにするためのベストプラクティスを探ってみました。

設定毎の挙動の違い

mise settings add idiomatic_version_file_enable_tools python(ランタイム名) を指定した場合

.python-version で指定されているバージョンが選択されます。

$ mise settings add idiomatic_version_file_enable_tools python
$ mise settings get idiomatic_version_file_enable_tools
["python"]

$ cat .python-version
3.12

$ python3 --version
Python 3.12.10

$ mise ls python
Tool    Version  Source                            Requested
python  3.12.10  ~/python_app_dir/.python-version  3.12
python  3.13.3

ちなみに idiomatic_version_file_enable_tools の設定は ~/.config/mise/config.toml に書かれています。

mise settings add idiomatic_version_file_enable_tools "[]" を指定した場合

$HOME/.config/mise/config.toml (= mise use -g python@VERSION) で指定されているバージョンが選択されます。 .python-version は無視されます。

$ mise settings set idiomatic_version_file_enable_tools "[]"
$ mise settings get idiomatic_version_file_enable_tools
[]

$ cat .python-version
3.12

$ python3 --version
Python 3.13.3

$ mise ls python
Tool    Version  Source                      Requested
python  3.12.10
python  3.13.3   ~/.config/mise/config.toml  latest

※ 確実に上書きするため mise settings set で指定しています。

ちなみに1: idiomatic_version_file_enable_tools にランタイムが指定されているが .python-version が無い場合

$HOME/.config/mise/config.toml で指定されているバージョンが選択されます。mise のデフォルト挙動ですね(あたりまえだな)。

$ mise settings add idiomatic_version_file_enable_tools python
$ mise settings get idiomatic_version_file_enable_tools
["python"]

$ cat .python-version
cat: .python-version: No such file or directory

$ python3 --version
Python 3.13.3

$ mise ls python
Tool    Version  Source                      Requested
python  3.12.10
python  3.13.3   ~/.config/mise/config.toml  latest

ちなみに2:idiomatic_version_file_enable_tools にランタイムが指定されていて .python-versionmise.toml が同時に存在した場合

mise.tomlmise use python@VERSION すると作成されます。

$ mise settings get idiomatic_version_file_enable_tools
["python"]

$ cat .python-version
3.12

$ cat mise.toml
[tools]
python = "3.13"

$ python3 --version
Python 3.13.3

$ mise ls python
Tool    Version  Source                      Requested
python  3.12.10
python  3.13.3   ~/python_app_dir/mise.toml  3.13

mise.toml が優先されます。

目的と対応すべき事

.python-version があるということは使ってほしい意図があると考えられるため、それが適用されるべきかと思います。
しかし mise は今後 .python-version を無視する挙動がデフォルトになるので、理由が無ければ

mise settings add idiomatic_version_file_enable_tools python

と、.python-version を参照する設定が良いでしょう。
これで冒頭にも書いた通り、

  1. ./mise.toml
  2. ./.python-version
  3. $HOME/.config/mise/config.toml

の順番でバージョンが選択されます。

あとがき

今回は Python を対象にしましたが、Ruby や Go などでも同様です。

※ idiomatic version file って言うんですね、今回初めて知った。

[EoT]

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?