
Windows 環境で Python を更新するときの流れを記録しました。
更新の必要有無を確認
とりあえず、デフォルトの Windows 環境で Python のチェック方法を記録します。コマンドプロンプトを開いて、バージョンをチェックする。
python -V
ここで「python3- V」というコマンドが紹介されていることもあります。Windows 環境では Python 3.X をインストールすると python コマンドが割り当てられるみたいです。python3 は自動的に割り当てられないことがあります。
自分の環境では以下のようになっていました。Windows Store App の Python だけだと、コマンドプロンプトで「python3 -V」を入れたときに「Python」が返ってくる状態になるみたいです。
where python3 > C:\Users\#user-name#\AppData\Local\Microsoft\WindowsApps\python3.exe
where python > C:\Users\#user-name#\AppData\Local\Programs\Python\Python312\python.exe > C:\Users\#user-name#\AppData\Local\Microsoft\WindowsApps\python.exe
py -0p -V:3.12 * C:\Users\#user-name#\AppData\Local\Programs\Python\Python312\python.exe
| コマンド | python バージョン | 説明 |
|---|---|---|
| python | 環境依存 (3.X or 2.X) | デフォルトの python を実行 |
| python3 | 3.X | Python 3.X を明示的に実行(主に Linux 用) |
| py | 最新の python | バージョン管理が可能 (主に Windows 用) |
なんで、Windows 環境では py コマンドが python3 コマンドみたいなものなので、便利だと思います。とはいえ、バージョン更新までしてくれるわけではない。
一般的には、それは「役割が違うよね」ということになるので、やはり「パッケージマネージャ」に頼る必要があります。しかし、Windows はデフォルトだとパッケージマネージャの用意がない(はずな)ので、結局マニュアルで HP からダウンロードしてアップデートすることになる……のですが、今回は「winget」を利用してアップデートする例を示します。
winget
すこし前までは windows 環境でパッケージマネージャーをしようとするとサードパーティの Chocolatey や Scoop を利用することになったと思います。
winget は microsoft が提供しているパッケージマネージャーで、徐々に使われるようになってきていると思います。
winget のバージョン確認は、以下のどちらかのコマンドをコマンドプロンプトで実行してください。もしも、インストールされていなかったら、Windows Store からインストールします。Windows Store アプリであれば、winget 本体のバージョン管理は自動的に更新されるようになるはずなので「楽」です。
winget winget -info
コマンド:
| コマンド | 説明 |
|---|---|
| install | 指定されたパッケージをインストール |
| show | パッケージに関する情報を表示します |
| source | パッケージのソースの管理 |
| search | アプリの基本情報を見つけて表示 |
| list | インストール済みパッケージを表示する |
| upgrade | 利用可能なアップグレードの表示と実行 |
| uninstall | 指定されたパッケージをアンインストール |
| hash | インストーラー ファイルをハッシュするヘルパー |
| validate | マニフェスト ファイルを検証 |
| settings | 設定を開くか、管理者設定を設定する |
| features | 試験的な機能の状態を表示 |
| export | インストールされているパッケージのリストをエクスポート |
| import | ファイル中のすべてのパッケージをインストール |
| pin | パッケージ ピンの管理 |
| configure | システムを適切な状態に構成します |
| download | 指定されたパッケージからインストーラをダウンロードする |
| repair | 選択したパッケージを修復します |
オプション:
| オプション | 説明 |
|---|---|
| -v,--version | ツールのバージョンを表示 |
| --info | ツールの一般情報を表示 |
| -?,--help | 選択したコマンドに関するヘルプを表示 |
| --wait | 終了する前に任意のキーを押すプロンプトをユーザーに表示 |
| --logs,--open-logs | 既定のログの場所を開く |
| --verbose,--verbose-logs | WinGet の詳細ログを有効にする |
| --nowarn,--ignore-warnings | 警告出力を非表示にする |
| --disable-interactivity | 対話型プロンプトを無効にします |
| --proxy | この実行に使用するプロキシを設定 |
| --no-proxy | この実行に対するプロキシの使用を無効にする |
更新
winget upgrade --all winget upgrade --all --silent
初回はサイレントにしなくてもいいかもと思います。サイレント実行をすると、管理者権限が必要になる場合もあってこのときは Powershell の管理者モードで実行するといい。
サイレントにしていない場合は、各ソフトウェアのポップアップが表示されるので、邪魔に思うかもしれないけど初回はこれくらいのほうが安全じゃないかな、という意見です。
これで python もまとめてアップデートできる。正直、アップデートをしない半端なバージョンを許さないほうがいいと思う考えで、バージョンを固定したいときは、下記の pin であらかじめ固定しておいて、他は --all ですべて更新がよいと思っています。
どうしても個別にやりたいときは python を例に挙げると、最初に list で ID を確認します。
winget list python
確認できた ID に対して upgrade を実行する。
winget upgrade --id Python.Python.3
念のため、最後にコマンドプロンプトでバージョンが変わっているかどうかもチェックしておこう。
python -V
バージョンの固定
アップデートしないパッケージは pin を使ってバージョンを固定します。
winget pin add <package>
こうしておくと upgrage --all といったアップデートの対象外になる。pin に追加した一覧を確認したいときは以下。
winget pin list
| コマンド | 説明 |
|---|---|
| add | 新しい PIN を追加する |
| remove | パッケージ PIN の削除 |
| list | 現在のピンを一覧表示する |
| reset | PIN をリセット |
おまけ:インストールのバッチ化
winget で管理できるアプリは「winget.run」で探す。
簡単な .bat ファイルを作成することで、ソフトウェアのインストール状態をまとめることが可能なので便利だと思います。
echo off winget install -e --id RARLab.WinRAR winget install -e --id Google.Chrome winget install -e --id Google.Drive winget install -e --id OBSProject.OBSStudio winget install -e --id Dropbox.Dropbox winget install -e --id Greenshot.Greenshot winget install -e --id Notion.Notion winget install -e --id KeePassXCTeam.KeePassXC echo on