Umi Uyuraのブログ

プログラミング関連の作業ログ

Pythonを複数バージョンインストールしているときにwingetでアップデートしてみる

先日WindowsPythonの環境を作った際、wingetとPythonランチャーで複数バージョンのPythonを使えるようにしてみました。

umi-uyura.hatenablog.com

どうやら最近3.10系の新しいバージョンが出たようなので、自分の環境もアップデートしてみることにしました。

Python Insider: Python 3.10.2, 3.9.10, and 3.11.0a4 are now available

現行バージョン(3.10)のアップデート

winget list でインストール済のパッケージの一覧を表示すると、新しいバージョンがあるものについては「利用可能」列にそのバージョンが表示されます。

>winget list python
名前            ID                                     バージョン  利用可能    ソース
-------------------------------------------------------------------------------------
Python 3        Python.Python.3                        3.9.7150.0  3.10.2150.0 winget
Python Launcher {7DE12550-BE09-44DD-BDB4-0EC26BA89DAF} 3.10.7644.0
Python 3        Python.Python.3                        3.10.1150.0 3.10.2150.0 winget
Python 3        Python.Python.3                        3.8.10150.0 3.10.2150.0 winget

私の環境にはPython 3.10、3.9、3.8が入っているのですが、どれも利用可能なバージョンとして 3.10.2150.0 と、3.10系の最新バージョンが表示されていました。

一覧上はどの系統もIDが Python.Python.3 となっていますが、この状態でwingetでアップデートするとどうなるのか?

>winget upgrade --id Python.Python.3
複数のインストール済みパッケージが一致する入力条件を検出しました。入力内容を修正してください。
名前                   ID
-------------------------------------------------------------
Python 3               Python.Python.3
Python 3.9.7 (64-bit)  {0f0bf1a5-3ec1-459b-ab7c-916db941f50d}
Python 3.10.1 (64-bit) {af822d5e-759c-4e77-9696-3cc835cd54a9}
Python 3.8.10 (64-bit) {e9cd241b-9125-4624-9625-ff42d2f3647f}

指定したIDに一致するパッケージが複数あるということで、何やら別々のIDが表示されました。

>winget upgrade --id {af822d5e-759c-4e77-9696-3cc835cd54a9}
見つかりました Python 3 [Python.Python.3] バージョン 3.10.2150.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://www.python.org/ftp/python/3.10.2/python-3.10.2-amd64.exe
  ██████████████████████████████  26.9 MB / 26.9 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

アップデートされたようです。

改めてインストール済Pythonの一覧を表示してみると、Python 3.10系のみアップデートされていました。

>winget list python
名前            ID                                     バージョン  利用可能    ソース
-------------------------------------------------------------------------------------
Python 3        Python.Python.3                        3.9.7150.0  3.10.2150.0 winget
Python Launcher {7DE12550-BE09-44DD-BDB4-0EC26BA89DAF} 3.10.7644.0
Python 3        Python.Python.3                        3.10.2150.0             winget
Python 3        Python.Python.3                        3.8.10150.0 3.10.2150.0 winget

>py --version
Python 3.10.2

ひとつ前のバージョン(3.9系)のアップデート

先のURLによると3.9系のアップデートも出ているようでしたので、試してみようと思ったのですが。

>winget show --versions python3
見つかりました Python 3 [Python.Python.3]
バージョン
-----------
3.10.2150.0
3.10.1150.0
3.10.150.0
3.9.7150.0
3.9.6150.0
3.9.5150.0
3.9.4150.0
...

2022/2/7時点では、winget用のパッケージとして 3.9.10 は出ていないようでした。

3.10系がでていることもあり、もしかすると3.9系の最新版はwingetに来ないかもしれないのかもと思い、公式サイトからインストーラーを落として入れてみることにしました。

https://www.python.org/downloads/release/python-3910/ からWindows installer (64-bit)をダウンロードして、インストールを実行。

そのあとで、あらためてインストール済のPythonの一覧を表示してみたところ、ちゃんと3.9系のバージョンがあがっていました。

>winget list python
名前            ID                                     バージョン  利用可能    ソース
-------------------------------------------------------------------------------------
Python 3        Python.Python.3                        3.9.10150.0 3.10.2150.0 winget
Python Launcher {7DE12550-BE09-44DD-BDB4-0EC26BA89DAF} 3.10.7644.0
Python 3        Python.Python.3                        3.10.2150.0             winget
Python 3        Python.Python.3                        3.8.10150.0 3.10.2150.0 winget

現行の最新バージョンであればwinget経由でアップデートしていけそうですが、それよりも前の系統については、必要に応じて手動でアップデートしないといけないのかもしれません。