python コマンドのバージョンを切り替える (pyenv, py)

互換性の問題のために、少し古いバージョンの python コマンドを使わなければいけないことがあります(機械学習系のライブラリなど)。 そのようなケースでは、次のようなツールを使って python コマンド自体のバージョンを切り替えると便利です。

  • pyenv … Linux または macOS 用の python バージョン切り替えコマンドです。Windows 用の移植もありますが、シェルスクリプトで作られているので、本質的には Linux または macOS 用です。
  • Python ランチャー (py) … Windows 用の Python インストーラーを使うと、Python ランチャー(py コマンド)をインストールすることができます。

pyenv コマンド

インストール

macOS の場合 (Homebrew)
$ brew update
$ brew install pyenv
Linux の場合
$ curl https://pyenv.run | bash

チートシート

コマンド説明
pyenv versionsインストール済みの Python バージョンの一覧を表示します。現在選択しているバージョンには * 印が付きます。
pyenv version現在選択している Python のバージョンを表示します。
pyenv install --listインストール可能な Python のバージョンを表示します。
pyenv install 3.10指定したバージョンの Python をインストールします。マイナーバージョンやパッチバージョンは省略できます。
pyenv uninstall 3.10.13指定したバージョンの Python をアンインストールします。バージョンは省略できません。
pyenv global 3.10Python のバージョンを切り替えます(グローバル設定)。
pyenv local 3.10Python のバージョンを切り替えます(カレントディレクトリ以下)。
pyenv shell 3.10Python のバージョンを切り替えます(現在のシェルのみ)。

使用例

まず、pyenv versions コマンドで、現在インストールされている Python のバージョン一覧を調べます。

$ pyenv versions
  system
* 3.12.0 (set by /Users/maku/.pyenv/version)

system3.12.0 がインストールされていることが分かります。 system の方は、pyenv の外の世界でインストールされた python コマンドを示しており、pyenv 管轄の python コマンドを使う場合は使用しません。 3.12.0 の横には * 印が付いているので、この状態で python コマンドを実行すると、バージョン 3.12.0 の Python が起動します。

$ python --version
Python 3.12.0

ここで、少し古い Python 3.10.X を使いたくなった場合は、次のように pyenv install コマンドでインストールします。

$ pyenv install 3.10

インストールが終わったら、もう一度 pyenv versions コマンドを実行して、正しくインストールされていることを確認します。

$ pyenv versions
  system
  3.10.13
* 3.12.0 (set by /Users/maku/.pyenv/version)

次に、pyenv global コマンドを使って、使用する Python バージョンを切り替えます。

$ pyenv global 3.10

$ pyenv versions
  system
* 3.10.13 (set by /Users/maku/.pyenv/version)
  3.12.0

$ python --version
Python 3.10.13

無事 python コマンドの実体が、Python 3.10 に切り替わっていることを確認できました。

上記の例では、pyenv global コマンドを使って python コマンドのバージョンを切り替えましたが、他にも pyenv localpyenv shell で切り替えることができます。 切り替え方法によって、次のように有効期間が異なります。

  • pyenv global … グローバルに python コマンドのバージョンを切り替えます。別のシェルを開いた場合にも有効です。バージョン情報は、~/.pyenv/version に保存されます。
  • pyenv local … カレントディレクトリ以下で使用する python コマンドのバージョンを切り替えます。バージョン情報は、カレントディレクトリの .python-version ファイルに保存されます。
  • pyenv shell … カレントシェルでのみ python コマンドのバージョンを切り替えます。

Python ランチャー(py コマンド)

Windows の Python 環境では Python ランチャー (py) を使って python コマンドのバージョンを切り替えることができます。

チートシート

コマンド説明
py --listインストール済みの Python バージョンの一覧を表示します。現在選択しているバージョンには * 印が付きます。
py --list-paths各バージョンの python.exe のフルパスを表示します。
py -3.8Python 3.8 を起動します。
py -3.8 -m pip install pandasPython 3.8 の環境にパッケージをインストールします。
py -3.8 -m venv venvPython 3.8 の環境で venv 仮想環境を作成します。