py コマンドで Python のバージョンを切り替える

2021-01-10

#Python3 #Windows10 コマンドライン 仮想環境

Python 公式パッケージの Windows 版には、py.exe という Python のランチャーが付属しています。
py.exe を使うと異なるバージョンの Python を瞬時に切り替えて実行できるほか、いくつかの利点があります。
Python バージョンの切り替え方法を中心に、py.exe の機能を解説します。

py コマンドの特長

py.exe には次のような特長があります。

  • C:\Windows にインストールされる為、どこからでも py で実行できる。
  • python.exe と同じオプション、引数を指定できる。
  • オプション指定で実行する Python のバージョンを切り替えられる。
  • Python 3.x / Python 2.x 及び 64bit / 32bit 版の切り替えが可能。
  • 異なるマイナーバージョンの Python を並行して実行できる。
  • デフォルトの Python バージョンを設定可能。
  • python.exe にパスを通す必要がない。

異なるバージョンの Python をインストール

Python は特別なことをしなくても、通常のインストール方法で複数の異なるバージョンをインストールして同時に利用できます。
メジャーバージョンが異なる Python 3 と Python 2 だけでなく、Python 3.8 と Python 3.9 などの異なるマイナーバージョンを複数インストールできます。

公式パッケージのインストール方法については Python 3 のインストール (Windows 版) をご覧ください。

インストール済みバージョンの確認

Python の公式パッケージが 1つでもインストールされていれば、py コマンドを利用できます。
現在インストールされているバージョンとパスの一覧は py -0p で確認できます。

C:\> py -0p
Installed Pythons found by C:\WINDOWS\py.exe Launcher for Windows
 -3.9-64        C:\Python\Python39\python.exe
 -3.8-64        C:\Python\Python38\python.exe *

末尾に * が付いているバージョンが現在の py.exe のデフォルトです。

Python のバージョンを指定して実行

py.exe のオプション指定で簡単に Python のバージョンを切り替えて実行できます。

メジャーバージョンの切り替え

-3 または -2 オプションで、各メジャーバージョンの最新版を実行できます。

C:\> py -3
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct  5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 

バージョン指定の有無に関わらず、続けて python.exe と同様のオプションやスクリプト名などを指定できます。

C:\> py -3 -m pip --version
pip 20.2.4 from C:\Python\Python39\lib\site-packages\pip (python 3.9)

マイナーバージョンの切り替え

-3.8 のように指定すると、特定のマイナーバージョンを選択して実行できます。

C:\> py -3.8
Python 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

また、-3.8-64-3.8-32 の形式で 64bit / 32bit 版を切り替えることもできます。

デフォルトのバージョンを選択

複数バージョンをインストール済みの環境で、py.exe をバージョン指定無しで実行すると、初期状態では最も新しいバージョンの Python が実行されます。

デフォルトで使うバージョンは設定により変更できます。
詳しくは py コマンドの規定 Python バージョンの設定方法 をご覧ください。

参考情報

QooQ