3.

python: Permission denied (WindowsApps) の原因と対処

編集
この記事の要点
  • 原因は Windows 10/11 標準の Microsoft Store スタブWindowsApps\python.exe は実体ゼロバイトの誘導用ファイル
  • 対処 1: 設定 → アプリ → アプリ実行エイリアスで「python.exe」「python3.exe」を OFF
  • 対処 2: 環境変数 PATH から WindowsApps を後ろに移動、python.org 公式の PATH を先頭に
  • 対処 3: py launcher (py -3.11) を使う / 公式インストーラーで上書き
  • WSL / Git Bash でこのエラーが出る場合は which python で実体が WindowsApps を指していないか確認

エラーの実例

# Git Bash / WSL / PowerShell で
$ python
bash: /c/Users/xxx/AppData/Local/Microsoft/WindowsApps/python: Permission denied

# あるいは
$ python --version
Python was not found; run without arguments to install from the Microsoft Store,
or disable this shortcut from Settings > Manage App Execution Aliases.

# あるいは
$ which python
/c/Users/xxx/AppData/Local/Microsoft/WindowsApps/python
# ← 実体は 0 バイトのスタブファイル

$ ls -la /c/Users/xxx/AppData/Local/Microsoft/WindowsApps/python.exe
-rwxr-xr-x 1 xxx 197121 0 ...  ← サイズが 0

なぜこうなるか

Windows 10 / 11 では、ユーザーが python と入力したときに Microsoft Store の Python ページに誘導するため、%LOCALAPPDATA%\Microsoft\WindowsApps0 バイトのスタブ実行ファイルが置かれています。これは「アプリ実行エイリアス (App Execution Alias)」と呼ばれる仕組みで、システムが内部的に解決して Store を開きます。

ところが、これは Windows 固有のセマンティクスのため、WSL / Git Bash / Cygwin から呼ぶと「実行権限がない」とみなされるか、cmd / PowerShell では Store を開くだけで終了します。

さらに、PATH 上で WindowsApps が 本物の Python (python.org 公式) より前に並んでいると、本物がインストール済でもスタブが優先されてしまいます。

対処1: アプリ実行エイリアスを OFF (最も確実)

  1. Windows 設定 (Win+I) を開く
  2. アプリアプリの詳細設定アプリ実行エイリアス (英語: Apps → Advanced app settings → App execution aliases)
  3. 一覧から以下を OFF:
    • アプリインストーラー python.exe
    • アプリインストーラー python3.exe
    • (必要なら) pip.exe 等も
  4. 新しいターミナルを開いて python --version を再確認

対処2: PATH を整理

python.org 公式インストーラを入れた後、PATH の順序が悪いとスタブが優先されます。

# 現在の PATH を確認
$env:Path -split ';'

# 出力例 (Bad):
# C:\Users\xxx\AppData\Local\Microsoft\WindowsApps  ← 先に来ている
# C:\Python311
# C:\Python311\Scripts

# 並び順は以下が望ましい (Good):
# C:\Python311                                       ← 先頭
# C:\Python311\Scripts
# C:\Users\xxx\AppData\Local\Microsoft\WindowsApps   ← 後ろ
  1. システムのプロパティ → 環境変数 (Win+R で sysdm.cpl → 詳細設定タブ)
  2. ユーザー環境変数 / システム環境変数の Path を編集
  3. Python の C:\Python311WindowsApps より上に移動
  4. OK で保存し、すべてのターミナルを開き直し

対処3: py launcher を使う

python.org 公式インストーラには py.exe ランチャーが同梱され、C:\Windows\ に置かれます。これは PATH の影響を受けず、複数バージョンを呼び分けられます。

py --version
py -3.11
py -3.12 -m pip install requests

# インストール済 Python を列挙
py -0

対処4: python.org 公式インストーラで上書き

Microsoft Store 版を入れている場合や、過去にインストールが破損している場合は、python.org 公式インストーラを入れ直すと最も確実です。

  1. python.org/downloads から最新の Python 3.x をダウンロード
  2. インストーラ起動時に 「Add python.exe to PATH」にチェック
  3. "Customize installation" → "Advanced Options" で "Install for all users" を選ぶと C:\Program Files\Python311 に入る
  4. 古い Microsoft Store 版があれば「アプリと機能」から削除
  5. 新しいターミナル (PowerShell / Git Bash) を開いて python --version

WSL / Git Bash 特有の事情

WSL や Git Bash は Windows の PATH を引き継ぐため、Windows 側のスタブを参照することがあります。

# WSL の場合: Linux 側の python3 を使うのが正解
which python3
# → /usr/bin/python3  ← これが正しい
# → /mnt/c/Users/xxx/.../WindowsApps/python  ← これは NG

# Ubuntu に Python が無ければ
sudo apt update
sudo apt install python3 python3-pip python3-venv

# Git Bash の場合: Windows 側の Python を呼びたい
# ~/.bashrc に以下を追加して PATH を上書き
export PATH="/c/Python311:/c/Python311/Scripts:$PATH"

確認方法

# PowerShell / cmd
where python
# C:\Python311\python.exe                                              ← OK
# C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\python.exe          ← NG (0 バイトなら)

# サイズが 0 ならスタブ
Get-Item C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\python.exe |
    Select-Object Length

# Git Bash / WSL
which -a python python3
ls -la $(which python)

切り分け表

症状原因対処
Permission deniedWindowsApps のスタブ参照 (Git Bash / WSL)エイリアス OFF + PATH 整理
Store ページが開く同上 (cmd / PowerShell)同上
--version で何も返らず終了スタブ実行同上
Python はあるのにモジュールが見つからない異なる Python を呼んでいるwhere python で実体特定
pip install しても反映されない別 Python の pip を実行python -m pip install ... で対象を明示

FAQ

Q: Microsoft Store 版の Python を使い続けても良い?
A: ライト用途なら可。ただしインストール先がサンドボックスで権限が変則、PATH の制御が効きにくいため、本格開発には python.org 公式版を推奨。

Q: アプリ実行エイリアスを OFF にしても直らない
A: ターミナルを再起動していますか。新しいタブではなく、すべての PowerShell / cmd を閉じてから開き直してください。Explorer の再起動 (タスクマネージャ) も有効。

Q: 会社 PC でエイリアス画面が無効化されている
A: グループポリシーで管理されている可能性があります。IT 部門に相談するか、代わりに py launcherC:\Python311\python.exe を直接フルパスで呼んでください。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ModuleNotFoundError: No module named '~'; '~' is not a package
  2. pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available
  3. ...AppData/Local/Microsoft/WindowsApps/python: Permission denied
  4. 【pycharm】connecting to console が終わらない
  5. can only concatenate str (not "NoneType") to str
  6. can only concatenate str (not "datetime.datetime") to str