Pythonをインストールしていない状況で、あるいはインストールしたが実行ファイルを環境変数PATHに追加していない状況で、コマンドプロンプトなどで「python」と入力すると、(%USERPROFILE%\AppData\Local\Microsoft\WindowsAppsフォルダにあるpython.exeが実行されて)Microsoft Storeアプリが開かれる。ここからPythonをインストールすることも可能だ。ただし、Microsoft Storeアプリなのでファイルシステムやレジストリの扱いが一般のWindowsアプリとは異なることから、python.orgからインストールするPythonとは異なる振る舞いをすることもあるかもしれない(これについてはPythonのドキュメント「Microsoft ストアパッケージ」などを参照されたい)。
左側にある[インストール]ボタンをクリックすると、Pythonのインストールが開始される。なお、以下の画像に示すように、以前のバージョンあるいは正式版ではないアルファバージョンなどもインストールできる。
Microsoft StoreからPythonをインストールすると、%USERPROFILE%\AppData\Local\Microsoft\WindowsAppsディレクトリにあるpython.exeが、インストールしたPython処理系に置き換えられる(同時にpip.exeファイルなどもこのディレクトリに置かれる)。そして、コマンドプロンプトなどでpythonコマンドを入力すると、対話環境が起動される。
python.orgからPythonをインストールした場合には、PythonランチャーであるpyコマンドがWindowsのシステムフォルダにインストールされるので、これを使って「py -3」「py -3.10」「py -m venv venv」のようにしてPython処理系を起動していた。これに対してMicrosoft Store版のPythonではpythonコマンドでPythonの処理系が起動する。ここは2つのPythonで異なる点だ(ただし、venvモジュールで仮想環境を作れば、この差異は見えなくなるだろう)。
なお、複数のバージョンをMicrosoft Storeからインストールした場合には上記ディレクトリに「python3.10.exe」「python3.9.exe」「pip3.10.exe」「pip3.9.exe」などが置かれるので、実行するPython処理系はバージョンを明示することで切り替えられる。
また、「python」のようにバージョン番号を加えずにコマンド名を入力したときに、どのバージョンが実行されるかを指定することも可能だ。これには[設定]アプリを起動して、[アプリ]をクリックし、[アプリと機能]画面で[アプリ実行エイリアス]をクリックする。これにより、以下のような画面が表示されるので、適宜設定をする。
例えば、上の画像では「python.exe」「python3.exe」を実行しようとしたときにはPython 3.10のコマンドが実行される。
なお、インストールされるのは、Python処理系に加えて標準ライブラリのみといったところだ。pipコマンドでインストールされるパッケージは「%USERPROFILE%\AppData\Local\Packages」ディレクトリ以下にあるPythonバージョンごとのディレクトリの配下(さらにディレクトリを何層か下ったところ)にインストールされる。
先ほど述べたようにMicrosoft Store版のPythonはファイルシステムやレジストリの扱いが通常のWindowsアプリと異なるため、python.orgやAnaconda系統のPythonとは振る舞いが異なる場合がある。こうしたことが問題になるのであれば、使用しない方がよいだろう。
本稿執筆時点(2022年3月18日)でMicrosoft Storeで配信されているPythonの最新バージョンは3.10.2だ。一方、2022年3月16日にはPython 3.10.3がリリースされている。ほんの少しかもしれないが、Microsoft Store版のPythonのリリースは遅れることに注意しよう。
WindowsでPythonを手軽にインストールする方法は他にもある。それはパッケージマネジャーを使うものだ。有名なものとしてはChocolateyなどがあるが、ここではマイクロソフト製のwingetを例に取ろう。wingetについては「アプリのインストールや更新をコマンドでサクっと実行『winget』の使い方」や「Windows環境再構築をコマンドラインで自動化可能にするMicrosoft製ツール『winget』とは」を参照されたい。
wingetではそのリポジトリ(wingetリポジトリ)またはMicrosoft Store(msstoreリポジトリ)からソフトウェアをインストールできる。そのため、wingetリポジトリに登録されているPythonをインストールしたり、Microsoft Store版のPythonをインストールしたりできる。
wingetでアプリを検索するにはsearchコマンドを使用する。「winget search」に続けて「python」と記述してもよいが、「--name python」とすると名前に「python」を含むものだけが表示されるので場合によってはこちらの方がよいだろう。
上の実行結果の右側の「ソース」欄には配布元が表示されている。「msstore」であればMicrosoft Storeからインストールされ、「winget」であればwingetが用意しているリポジトリからインストールされる。つまり、上の方にある各バージョンのPythonはMicrosoft Storeに登録されている。一方、下の方にあるPython 3(IDが「Python.Python.3」になっているもの)はMicrosoft Store版のPythonではなく、インストーラーが実行される(Pythonランチャーもインストールされるし、インストール先もMicrosoft Store版とは異なり「%USERPROFILE%\AppData\Local\Programs\Python」となる)。
Pythonをインストールするにはinstallコマンドを使用する。簡単には「winget install --id ID値」として、上の画像のID欄に表示された値を指定するのがよい。IDではなく、名前を指定してもインストールは可能だが、例えば「winget install python」コマンドを実行すると、筆者の環境ではPython 3.9がインストールされた。特定のバージョンをインストールするのであれば、IDを指定することをオススメする。例えば、Microsoft Store版のPython 3.8をインストールするには次のようにする(最下行に注目)。
この画像にはないが、使用条件に同意するかどうかが問い合わされるので「Y」を入力すればインストールが開始される。
なお、Microsoft Store版のPythonではマイナーバージョンごとにIDが割り振られているが、上の画像で下の方にある(インストーラー版)PythonではIDはPython.Python.3で一定であり、インストール時に特定のバージョンを指定できる。バージョンは「winget show --versions ID値」のようにshowコマンドに--versionsオプションとIDを指定することで調べられる。以下に例を示す。
この情報を使用して、インストーラー版のPython 3.7.9150.0をインストールするには次のようにする。
インストールされているアプリを一覧するにはlistコマンドが使える。以下にインストール済みのPython処理系を表示したものを示す。
キーボードでなるべく多くのことを済ませたい、という人にはwingetは最適な候補となるかもしれない。Pythonのインストールをコマンドラインだけで行えるのは便利かもしれない。
本稿では5種類のPython処理系をインストールしてみた。筆者が考えるところでは、python.orgのインストーラーかAnacondaのどちらかを使う(または、状況によってはMinicondaを代替とする)のが簡単でよさそうだ。筆者は以前からpython.orgからインストーラーをダウンロードしてインストールしていたので、体になじんでいるという点で大きな変更がない限りはpython.orgを使い続けるだろう。
また、筆者は通常VS Codeの統合ターミナルを使って、pipと各種モジュールを組み合わせていろいろすることが多い。Anacondaが提供するGUIは便利だが、仮想環境を作るのにVS CodeからAnaconda Navigatorにウィンドウを切り替えるのは少し面倒だ。もちろん、condaコマンドを使えば、統合ターミナル内で同様な操作は可能なので、Anacondaに慣れている人はVS Codeとcondaコマンドの組み合わせが気持ちよく作業を進められるだろう。
気になるのはwingetだが、これについては様子を見ながら、そちらに切り替えるかどうかを検討したい。
Copyright© Digital Advantage Corp. All Rights Reserved.