[python][windows] python.exe が実行できない

1. 症状

公式サイトからPythonをインストールしたにもかかわらず python (python3) が実行できない。

1.1. Microsoft Storeへのリンクが開く

Microsoft Store

Microsoft StoreのPythonへのリンク が開く。

1.2. アクセス違反が発生する

bashコンソール(≠WSL)から開くとアクセス違反が発生する。

2. 原因

  1. インストールした python.exe への path が通っていない(パス設定できていない)。
  2. Windows 10 でデフォルトインストールされている/パスが通っているのは Microsoft Store の Python ページへのランチャーである。 Microsoft Store へ誘導したい気持ちはわかるが同名の実行ファイルは混乱を招く…
  3. Python はバージョンによって動く/動かない、という互換性の問題が背景にあるため、Pythonランチャー py.exe でバージョンを切換える仕組みになっている。

3. 解決策

3.1. Pythonランチャー py.exe からスクリプトを実行する。

3.1.1. スクリプト実行例

3.1.2. Pythonバージョン確認

3.1.3. pipによるパッケージのインストール

pipコマンドを直接呼び出すのではなく、py.exe ⇒ ほぼ最新版 python.exe ⇒ ほぼ最新版 pipモジュール と経由して呼び出す。このようにすることで特定のバージョンの python.exe, pip.exe にPATHを通す必要なく動的にパッケージをインストールできる。
※ 「ほぼ」最新版とした理由は、あくまでもローカル環境にインストールされた複数のバージョンの中の最新版をPythonランチャーが選択する、という意味です。

 

3.2. 適切なバージョンの python.exe にパスを通す。

 

4. 背景

公式インストーラのデフォルトインストールでは python.exe へのパスを設定しない。代わりにPythonランチャー py.exe へのパスが設定されている(実行できる)。複数のバージョンの python.exe をインストールして py.exe でバージョンを切換えることができる。拡張子 "py" の関連付けも py.exe になっている。

UNIX環境などとの互換性を気にしないのであれば、py.exe 経由でpythonスクリプトを実行する方法で十分である。

4. インストールフォルダ

4.1. py.exe

4.2. python.exe

  • ver. 3.10 の例
  • Windows版の実行ファイルは 3.x系 も "python.exe" (≠python3.exe) である。
4.2.1. for all users

4.2.2. for user