Pythonのバージョン管理:pyenv・miseの使い方と切り替え方法
はじめに
Pythonを使っていると、こんな場面が出てきます。
- プロジェクトAはPython 3.11、プロジェクトBはPython 3.13を使っている
- チームの誰かの環境だけ動かない
- 新しいPythonを試したいが、今の環境を壊したくない
バージョン管理ツールを使えば、プロジェクトごとにPythonのバージョンを自動で切り替えられます。この記事ではよく使われる pyenv と、最近人気の mise の使い方を解説します。
pyenvとmiseの違い
| pyenv | mise | |
|---|---|---|
| 特徴 | Python専用のバージョン管理ツール | Python以外の言語も管理できる |
| 歴史 | 長く、情報が豊富 | 比較的新しい(旧rtx) |
| 対応言語 | Python | Python、Node.js、Ruby、Goなど |
| 設定ファイル | .python-version |
.mise.toml または .python-version |
Pythonだけ管理するなら pyenv、複数言語を一元管理したいなら mise がおすすめです。
pyenvを使う
インストール
Mac(Homebrew)
brew install pyenv
シェルの設定ファイルに以下を追加します。
# ~/.zshrc export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)"
設定を反映します。
source ~/.zshrc
インストール確認
pyenv --version
pyenv 2.4.0
Pythonをインストールする
インストール可能なバージョンを確認します。
pyenv install --list
特定のバージョンをインストールします。
pyenv install 3.13.2
インストール済みのバージョン一覧を確認します。
pyenv versions
system 3.11.9 * 3.13.2 (set by /Users/username/.pyenv/version)
バージョンを切り替える
グローバル(デフォルト)のバージョンを設定する
pyenv global 3.13.2
プロジェクト単位でバージョンを設定する
プロジェクトのディレクトリで以下を実行します。
pyenv local 3.11.9
.python-version ファイルが作成され、そのディレクトリ以下では自動的に指定したバージョンが使われます。
cat .python-version # 3.11.9
現在のバージョンを確認する
pyenv version
3.13.2 (set by /Users/username/.pyenv/version)
miseを使う
インストール
Mac(Homebrew)
brew install mise
シェルの設定ファイルに以下を追加します。
# ~/.zshrc eval "$(mise activate zsh)"
設定を反映します。
source ~/.zshrc
インストール確認
mise --version
Pythonをインストールする
インストール可能なバージョンを確認します。
mise ls-remote python
特定のバージョンをインストールします。
mise install python@3.13.2
バージョンを切り替える
グローバルのバージョンを設定する
mise use --global python@3.13.2
プロジェクト単位でバージョンを設定する
プロジェクトのディレクトリで以下を実行します。
mise use python@3.11.9
.mise.toml ファイルが作成されます。
[tools] python = "3.11.9"
miseは .python-version ファイルも読み込むため、pyenvで管理されていたプロジェクトでもそのまま使えます。
現在のバージョンを確認する
mise current python
python 3.13.2
プロジェクトに参加したときの流れ
pyenvまたはmiseを使っているプロジェクトをクローンした場合、.python-version または .mise.toml に記載されたバージョンが必要です。
# クローン後 git clone https://github.com/example/project cd project # .python-versionを確認 cat .python-version # 3.11.9 # 該当バージョンをインストール(pyenvの場合) pyenv install 3.11.9 # または mise の場合 mise install
mise install は設定ファイルを読んで必要なバージョンを自動でインストールしてくれます。
venv(仮想環境)との組み合わせ
バージョン管理ツールでPythonのバージョンを固定したうえで、プロジェクトごとにvenvで仮想環境を作るのが一般的です。
# Pythonバージョンを固定(pyenvの場合) pyenv local 3.13.2 # 仮想環境を作成 python3 -m venv .venv # 仮想環境を有効化 source .venv/bin/activate # パッケージをインストール pip install -r requirements.txt
バージョン管理ツールは「どのPythonを使うか」を決め、venvは「そのプロジェクト専用の環境」を作ります。両方を組み合わせることで環境の汚染を防げます。
まとめ
| 操作 | pyenv | mise |
|---|---|---|
| インストール | brew install pyenv |
brew install mise |
| Pythonインストール | pyenv install 3.13.2 |
mise install python@3.13.2 |
| グローバル設定 | pyenv global 3.13.2 |
mise use --global python@3.13.2 |
| プロジェクト設定 | pyenv local 3.13.2 |
mise use python@3.13.2 |
| 現在のバージョン確認 | pyenv version |
mise current python |
- pyenvはPython専用で情報が豊富。Pythonしか使わないなら十分
- miseはNode.js・Ruby・Goなど複数言語をまとめて管理できる
- どちらも
.python-versionファイルに対応しているので既存プロジェクトとの互換性あり - バージョン確認の方法は「Pythonのバージョン確認方法まとめ」を参照
- ディレクトリごとにvenvを自動で有効化するには「direnv入門:ディレクトリごとに環境変数を自動で切り替える」を参照