「Python Install Manager とは」の版間の差分

提供: tknotebook
移動: 案内、 検索
(→‎pythonランタイムのインストール)
(→‎インストール)
 
(1人の利用者による、間の45版が非表示)
14行: 14行:
 
# 従来の python コマンドの他に linux版等と互換な名称のpython3 コマンドが提供されるようになった。
 
# 従来の python コマンドの他に linux版等と互換な名称のpython3 コマンドが提供されるようになった。
 
# バージョン番号付きの python3.13 コマンドなども提供され、py コマンドを使わなくても python のバージョンが指定できるようになった。
 
# バージョン番号付きの python3.13 コマンドなども提供され、py コマンドを使わなくても python のバージョンが指定できるようになった。
−
# 従来、各ランライムの Scripts ディレクトリに格納されていた、パッケージと共にインストールされる CLIコマンドが、一つのディレクトリに集約され、いつでも利用できるようになった。
+
# 従来、各ランライムの Scripts ディレクトリに格納されていた、パッケージと共にインストールされる コマンドが、一つのディレクトリに集約され、いつでも利用できるようになった。
  
 
以下に PIM の詳細を説明します。
 
以下に PIM の詳細を説明します。
22行: 22行:
 
まず、インストールから説明します。
 
まず、インストールから説明します。
  
−
実は、PIM のインストールでは、pythonの前のバージョンを完全にインストールしないといろいろな不具合に襲われます。
+
実は、PIM のインストールでは、pythonの旧来のバージョンや python Launcherを完全にアンインストールしないといろいろな不具合に襲われます。
 
下記URLの手順に従って、古い python は削除した方が良いでしょう。古いランタイムと python Launcher(pyコマンド)の両方を削除して下さい。
 
下記URLの手順に従って、古い python は削除した方が良いでしょう。古いランタイムと python Launcher(pyコマンド)の両方を削除して下さい。
  
43行: 43行:
  
 
'''PIM(Python Install Manager)'''のインストーラは '''https://www.python.org/downloads/''' からもダウンロードできますし、
 
'''PIM(Python Install Manager)'''のインストーラは '''https://www.python.org/downloads/''' からもダウンロードできますし、
−
'''MSストア'''から['''Python Install Manager''']を選んでインストールすることもできます。
+
'''MSストア'''から['''Python Install Manager''']を選んでインストールすることもできます。MSストア版と python.org版は同一です。
 +
 
 +
尚、PIMは自動更新ですので、手動での更新は不要です。
  
 
== 最初の pythonランタイムのインストール ==
 
== 最初の pythonランタイムのインストール ==
51行: 53行:
 
powershellのコマンドラインで
 
powershellのコマンドラインで
 
  py
 
  py
−
と叩くと、最新版の pythonランタイムのインストールが始まり、終わると pythonが起動します。
+
と叩くと、最新版の pythonランタイムのインストールが始まり、終わると 最新のpythonが起動します。
  
−
python ランタイムは '''~/AppData/Local/Python に pythoncore-3.14-64''' 等といったフォルダにインストールされますが
+
インストールは従来の python インストーラに比べとんでもなく高速です。
−
ここには PATH が通っていません。python や他のコマンドを起動するコマンドは ~/AppData/Local/Python/bin に置かれます。
+
 
 +
python ランタイムは '''~/AppData/Local/Python の pythoncore-3.14-64''' というようなフォルダにインストールされますが
 +
ここには PATH が通っていません。python や他のコマンドを起動するコマンド群は '''~/AppData/Local/Python/bin''' に置かれます。
 
こちらには PATH が通っています。
 
こちらには PATH が通っています。
  
−
python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64 はインストールした pythonランタイムのうち、最新のランタイムのpythonを起動するコマンドです。
+
python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe はインストールした pythonランタイムのうち、最新のランタイムのpythonを起動するコマンドです。
  
 
pip.exe, pip3.exe はインストールした pythonランタイムのうち、最新のランタイムのpipを起動するコマンドです。
 
pip.exe, pip3.exe はインストールした pythonランタイムのうち、最新のランタイムのpipを起動するコマンドです。
  
−
python3,14.exe, python3.14-64.exe, pythonw3,14.exe, pythonw3.14-64.exe 等の pythonランタイムバージョンが付いたコマンドは、指定バージョンの pythonランタイムの python を起動します。
+
python3.14.exe, python3.14-64.exe, pythonw3,14.exe, pythonw3.14-64.exe 等の pythonランタイムバージョンが付いたコマンドは、指定バージョンの pythonランタイムの python を起動します。
  
 
==pythonランタイムのインストール==
 
==pythonランタイムのインストール==
 +
 +
pythonのランタイムを追加インストールするには
 +
py install <バージョン>
 +
例 py install 3.12
 +
というように、python install コマンドに pythonランタイムのバージョンを指定します。
 +
 +
インストールする pythonランタイムが既にインストール済みの pythonランタイムより古ければ '''~/AppData/Local/Python/bin''' に有る
 +
python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe は更新されず、最新の python を呼び出すように保たれます。
 +
 +
インストールする pythonランタイムが既にインストール済みの pythonランタイムより新しければ '''~/AppData/Local/Python/bin''' に有る
 +
python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe は更新され、最新の python を呼び出すようになります。
 +
 +
バージョン付きのコマンド python<バージョン>.exe, python<バージョン>-64.exe, pythonw<バージョン>.exe, pythonw<バージョン>-64.exe が新たに追加されます。
 +
 +
==pythonランタイムのアンインストール==
  
 
pythonのランタイムをインストールするには
 
pythonのランタイムをインストールするには
−
  py install 3.12
+
  py uninstall <バージョン>
−
という具合に、pythonのバージョンを指定してインストールします。
+
例 py uninstall 3.12
 +
というように、python uninstall コマンドに pythonランタイムのバージョンを指定します。
 +
 
 +
アンインストールする pythonランタイムが削除されることによって、インストール済みの pythonランタイムの最も新たしいバージョンが変化すれば、 '''~/AppData/Local/Python/bin''' に有る python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe が更新され、インストール済みの pythonランタイムの最も新たしいバージョンのpython を呼び出すようになります。
 +
 
 +
バージョン付きのコマンド python<バージョン>.exe, python<バージョン>-64.exe, pythonw<バージョン>.exe, pythonw<バージョン>-64.exe は削除されます。
 +
 
 +
== ~/AppData/Local/Python/bin にあるコマンドの役割 ==
 +
 
 +
以上からわかるように python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe は
 +
常にインストールされている最新のpythonを起動するのに対し、
 +
python<バージョン>.exe, python<バージョン>-64.exe, pythonw<バージョン>.exe, pythonw<バージョン>-64.exe は
 +
バージョンで指定されたバージョンの python を起動します。
 +
 
 +
旧来の python launcher では 古いpythonを起動するのに py -3.12 とかしていましたが、
 +
PIM版では python3.12 でも起動できるようになりました。
 +
 
 +
==注意==
 +
 
 +
uv でインストールする python ランタイムは ~/.local/bin に python<バージョン>.exe をインストールしますが
 +
PIM版のランタイムと名称が競合します。また uv で --system 付きで pythonランタイムをインストールすると
 +
~/.local/bin に python.exe, python3.exe をインストールするので名称が競合します。
 +
どちらが起動されるかは PATH の設定次第です。
 +
 
 +
できれば PIM版とUV版のランタイムを同時に使用しない方が良いでしょう。
 +
 
 +
:UVは PIM版のランタイムを問題なく扱えます。UVは複数pythonランタイムの同時使用に関するポリシーが若干違います。
 +
 
 +
==パッケージのコマンドの扱いの違い==
 +
 
 +
Python のパッケージには、Pythonの実行環境に コマンドを追加するものが有ります。
 +
PIM版の Pythonランタイムでも、パッケージをインストールすると、パッケージによってはコマンドが pythonランタイムに追加されますが、
 +
それは、Pythonランタイム の '''Scripts''' ディレクトリに置かれます。
 +
 
 +
例えば pythonに jupyter を pip でインストールすると、'''Scriptsディレクトリ'''に
 +
jupyter.exe をはじめたくさんの コマンドが追加されます。これは旧来の pythonでも PIM版のpythonランタイムでも同じです。
 +
 
 +
但し、PIM版の pythonランタイムは複数同時にインストール可能なため、'''Scriptsディレクトリ'''には '''Path が通っていません'''。
 +
このため、パッケージのコマンドは '''PATH の通っている''' '''~/AppData/Local/Python/bin''' に置かれます。
 +
 
 +
このディレクトリは一つしかないので、複数のpythonランタイムに同じ名前のパッケージのコマンドがインストールされると
 +
名前が衝突してしまいます。そこで、PIM ではインストールされている pythonランタイムの中でより新しいもののパッケージの
 +
コマンドを優先します。
 +
 
 +
ここで注意すべきなのは、パッケージのコマンドは '''~/AppData/Local/Python/bin''' に自動的には置かれないことです。
 +
パッケージを pip でインストールした時点ではコマンドは '''Scriptsディレクトリ''' に置かれますが '''~/AppData/Local/Python/bin''' には'''置かれません'''。
 +
py install --refresh
 +
が叩かれると、PIM は各pythonランタイムの '''Scriptsディレクトリ'''の状況を調べ、'''~/AppData/Local/Python/bin''' に置くべき
 +
コマンドを選んで置きます。従って、パッケージをインストールしても、'''py install --refresh''' を実行しないとコマンドは使えません。
 +
 
 +
PIMを使いだすと、パッケージのコマンドが使えず困った経験がある人は多いでしょう。すぐに py install --refresh を打ってください。
 +
 
 +
pipxなどシステムpythonにインストールしたいパッケージは有るので、この仕組みはありがたいですが、
 +
システムpythonに直接パッケージをインストールするのは無理が有る話なのでこの不便さは諦めましょう。
 +
基本、パッケージは仮想環境にインストールすべきです。
 +
仮想環境ならば '''Scriptsディレクトリ''' に PATHは通っているので問題なく使えます。
 +
 
 +
 
 +
この仕組みは複数の システムpython を同時にインストールして使うための苦肉の策と言えますが、最善の策とは言えません。
 +
基本的に システムpython を複数インストールしてそれぞれにパッケージをインストールして使うのには無理が有ります。
 +
システムpython を複数インストールするのは、仮想環境の親の システムpython を複数用意するためなのです。
 +
 
 +
==まとめ==
 +
 
 +
以上の説明からお分かりかと思いますが、pythonのインストーラは バージョン毎に個別にインストールすることをやめ、
 +
PIMで複数のバージョンを自在にインストールできるようになりました。
 +
 
 +
これにより pythonのバージョンに依存する
 +
アプリケーションを実行することが容易になりました。
  
−
インストールする pythonランタイムが既にインストール済みの pythonランタイムより古ければ
+
その分パッケージのコマンドの管理がややこしくなりました。

2026年10月8日 (木) 04:02時点における最新版

メインページ>コンピュータの部屋#Python>Python Tips

はじめに

2025年10月7日 python3.14 はリリースされると共に、python の新しいインストーラ Python Install Manager(PIM) がリリースされました。

PIM はこれまでの個別のランタイム用インストーラーとは異なり、 複数の python ランタイムを自在にインストール/アンインストールするためのインストールマネージャーで 特定の python ランタイムとは独立した存在です。今のところ Windows 専用ですが、これまでの特定の python ランタイムとは 異なる考え方で作られています。

  1. 複数の python ランタイムを自在にインストール/アンインストールでき管理できる。
  2. 従来の python コマンドの他に linux版等と互換な名称のpython3 コマンドが提供されるようになった。
  3. バージョン番号付きの python3.13 コマンドなども提供され、py コマンドを使わなくても python のバージョンが指定できるようになった。
  4. 従来、各ランライムの Scripts ディレクトリに格納されていた、パッケージと共にインストールされる コマンドが、一つのディレクトリに集約され、いつでも利用できるようになった。

以下に PIM の詳細を説明します。

インストール

まず、インストールから説明します。

実は、PIM のインストールでは、pythonの旧来のバージョンや python Launcherを完全にアンインストールしないといろいろな不具合に襲われます。 下記URLの手順に従って、古い python は削除した方が良いでしょう。古いランタイムと python Launcher(pyコマンド)の両方を削除して下さい。

Python完全アンインストール手順

https://www.insource-da.co.jp/dxpedia/02_0008.html

実はこれだけでも不十分で、[設定]→[アプリの詳細設定]→[アプリ実行エイリアス] の画面で、python.exe/pythonw.exe/python3.exe を OFF にすることをお勧めします。

アプリ実行エイリアスとは ~/AppData/Local/Microsoft/WindowsApps に置かれるコマンドのことで、 上記の設定で削除することができます。ここには notepad.exe など様々などこからでも使えるコマンドが登録されていて、 python.exe は利用者が python コマンドを打鍵したとき MSストアへ誘導するなどの機能が有りますが、pythonランタイムと衝突して 様々な不具合を生じさせることが報告されていますので、OFFにすることを強く推奨します。


アプリ実行エイリアス python.png


以上の掃除が終わったら、PIMをインストールしましょう。

PIM(Python Install Manager)のインストーラは https://www.python.org/downloads/ からもダウンロードできますし、 MSストアから[Python Install Manager]を選んでインストールすることもできます。MSストア版と python.org版は同一です。

尚、PIMは自動更新ですので、手動での更新は不要です。

最初の pythonランタイムのインストール

PIM がインストールされた時点では python ランタイムは何もインストールされていません。

powershellのコマンドラインで

py

と叩くと、最新版の pythonランタイムのインストールが始まり、終わると 最新のpythonが起動します。

インストールは従来の python インストーラに比べとんでもなく高速です。

python ランタイムは ~/AppData/Local/Python の pythoncore-3.14-64 というようなフォルダにインストールされますが ここには PATH が通っていません。python や他のコマンドを起動するコマンド群は ~/AppData/Local/Python/bin に置かれます。 こちらには PATH が通っています。

python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe はインストールした pythonランタイムのうち、最新のランタイムのpythonを起動するコマンドです。

pip.exe, pip3.exe はインストールした pythonランタイムのうち、最新のランタイムのpipを起動するコマンドです。

python3.14.exe, python3.14-64.exe, pythonw3,14.exe, pythonw3.14-64.exe 等の pythonランタイムバージョンが付いたコマンドは、指定バージョンの pythonランタイムの python を起動します。

pythonランタイムのインストール

pythonのランタイムを追加インストールするには

py install <バージョン>
例 py install 3.12

というように、python install コマンドに pythonランタイムのバージョンを指定します。

インストールする pythonランタイムが既にインストール済みの pythonランタイムより古ければ ~/AppData/Local/Python/bin に有る python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe は更新されず、最新の python を呼び出すように保たれます。

インストールする pythonランタイムが既にインストール済みの pythonランタイムより新しければ ~/AppData/Local/Python/bin に有る python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe は更新され、最新の python を呼び出すようになります。

バージョン付きのコマンド python<バージョン>.exe, python<バージョン>-64.exe, pythonw<バージョン>.exe, pythonw<バージョン>-64.exe が新たに追加されます。

pythonランタイムのアンインストール

pythonのランタイムをインストールするには

py uninstall <バージョン>
例 py uninstall 3.12

というように、python uninstall コマンドに pythonランタイムのバージョンを指定します。

アンインストールする pythonランタイムが削除されることによって、インストール済みの pythonランタイムの最も新たしいバージョンが変化すれば、 ~/AppData/Local/Python/bin に有る python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe が更新され、インストール済みの pythonランタイムの最も新たしいバージョンのpython を呼び出すようになります。

バージョン付きのコマンド python<バージョン>.exe, python<バージョン>-64.exe, pythonw<バージョン>.exe, pythonw<バージョン>-64.exe は削除されます。

~/AppData/Local/Python/bin にあるコマンドの役割

以上からわかるように python.exe, pythonw.exe, python3.exe, pythonw3.exe、python3-64.exe, pythonw3-64.exe は 常にインストールされている最新のpythonを起動するのに対し、 python<バージョン>.exe, python<バージョン>-64.exe, pythonw<バージョン>.exe, pythonw<バージョン>-64.exe は バージョンで指定されたバージョンの python を起動します。

旧来の python launcher では 古いpythonを起動するのに py -3.12 とかしていましたが、 PIM版では python3.12 でも起動できるようになりました。

注意

uv でインストールする python ランタイムは ~/.local/bin に python<バージョン>.exe をインストールしますが PIM版のランタイムと名称が競合します。また uv で --system 付きで pythonランタイムをインストールすると ~/.local/bin に python.exe, python3.exe をインストールするので名称が競合します。 どちらが起動されるかは PATH の設定次第です。

できれば PIM版とUV版のランタイムを同時に使用しない方が良いでしょう。

UVは PIM版のランタイムを問題なく扱えます。UVは複数pythonランタイムの同時使用に関するポリシーが若干違います。

パッケージのコマンドの扱いの違い

Python のパッケージには、Pythonの実行環境に コマンドを追加するものが有ります。 PIM版の Pythonランタイムでも、パッケージをインストールすると、パッケージによってはコマンドが pythonランタイムに追加されますが、 それは、Pythonランタイム の Scripts ディレクトリに置かれます。

例えば pythonに jupyter を pip でインストールすると、Scriptsディレクトリに jupyter.exe をはじめたくさんの コマンドが追加されます。これは旧来の pythonでも PIM版のpythonランタイムでも同じです。

但し、PIM版の pythonランタイムは複数同時にインストール可能なため、Scriptsディレクトリには Path が通っていません。 このため、パッケージのコマンドは PATH の通っている ~/AppData/Local/Python/bin に置かれます。

このディレクトリは一つしかないので、複数のpythonランタイムに同じ名前のパッケージのコマンドがインストールされると 名前が衝突してしまいます。そこで、PIM ではインストールされている pythonランタイムの中でより新しいもののパッケージの コマンドを優先します。

ここで注意すべきなのは、パッケージのコマンドは ~/AppData/Local/Python/bin に自動的には置かれないことです。 パッケージを pip でインストールした時点ではコマンドは Scriptsディレクトリ に置かれますが ~/AppData/Local/Python/bin には置かれません。

py install --refresh

が叩かれると、PIM は各pythonランタイムの Scriptsディレクトリの状況を調べ、~/AppData/Local/Python/bin に置くべき コマンドを選んで置きます。従って、パッケージをインストールしても、py install --refresh を実行しないとコマンドは使えません。

PIMを使いだすと、パッケージのコマンドが使えず困った経験がある人は多いでしょう。すぐに py install --refresh を打ってください。

pipxなどシステムpythonにインストールしたいパッケージは有るので、この仕組みはありがたいですが、 システムpythonに直接パッケージをインストールするのは無理が有る話なのでこの不便さは諦めましょう。 基本、パッケージは仮想環境にインストールすべきです。 仮想環境ならば Scriptsディレクトリ に PATHは通っているので問題なく使えます。


この仕組みは複数の システムpython を同時にインストールして使うための苦肉の策と言えますが、最善の策とは言えません。 基本的に システムpython を複数インストールしてそれぞれにパッケージをインストールして使うのには無理が有ります。 システムpython を複数インストールするのは、仮想環境の親の システムpython を複数用意するためなのです。

まとめ

以上の説明からお分かりかと思いますが、pythonのインストーラは バージョン毎に個別にインストールすることをやめ、 PIMで複数のバージョンを自在にインストールできるようになりました。

これにより pythonのバージョンに依存する アプリケーションを実行することが容易になりました。

その分パッケージのコマンドの管理がややこしくなりました。