状況
Pythonをインストールして新しいターミナルを開き、python --versionと入力したら、こんなエラーが表示された:
'python' は内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
あるいは昨日まで動いていたのに突然動かなくなった、という場合もあるでしょう。いずれにせよ、スクリプトが一切動かない状態なので今すぐ直す必要があります。
何が原因なのか
Windowsはコマンドを探す際に、PATHと呼ばれるディレクトリの一覧を順番に検索します。pythonと入力すると各ディレクトリにpython.exeがないか確認し、見つからなければコマンドは実行されずエラーになります。
よくある原因:
- Pythonをインストールしたとき、インストーラーの「Add Python to PATH」のチェックを外したか見落とした——非常によくあるミスです。
- 複数のPythonバージョンがインストールされていて競合している。
- 別のソフトのインストールやアンインストールでPATHが変更・破損した。
- Pythonインストール中にターミナルを開いたままにしていた。既存のセッションは新しいPATHの変更を反映しません。
まず確認する
設定を変える前にこのコマンドを実行してください:
where python
C:\Users\YourName\AppData\Local\Programs\Python\Python312\python.exeのような結果が返ってきた場合、Pythonはインストール済みでPATHに追加されていないだけです。何も返ってこない場合はPython自体がインストールされていないので、先にインストールしてから戻ってきてください。
こちらも試してみてください:
py --version
これは動くのにpythonでは動かない場合、Windows Python LauncherはあるけれどPATHにpythonのエイリアスが登録されていない状態です。以下の修正方法で解消できます。
修正1:ターミナルを再起動する
Pythonをインストールしたばかりであれば、開いているターミナルウィンドウをすべて閉じて新しく開いてください。PATHの変更は実行中のセッションには反映されません。これだけで約20%のケースが解決します——他を試す前にまずやってみましょう。
修正2:「Add to PATH」にチェックを入れてインストーラーを再実行する
インストール時にそのチェックボックスを飛ばしてしまいましたか?インストーラーにパスを追加させるのが最もきれいな解決策です:
- 設定 → アプリ → インストールされているアプリに移動してPythonを見つけ、変更をクリック。
- インストーラーのダイアログで再度変更を選択。
- 「オプション機能」画面で次へをクリック。
- 「詳細オプション」で**「Add Python to environment variables」**にチェックを入れる。
- インストールをクリック。
新しいターミナルを開いて確認:
python --version
修正3:PATHにPythonを手動で追加する
インストーラーを再実行したくない場合は、直接パスを追加できます。
Pythonのインストール場所を確認する
where python
:: それで見つからない場合:
dir /s /b C:\python.exe 2>nul
dir /s /b "%LOCALAPPDATA%\Programs\Python\python.exe" 2>nul
よくあるインストール場所:
C:\Users\YourName\AppData\Local\Programs\Python\Python312\C:\Python312\C:\Program Files\Python312\
PATHに追加するディレクトリは2つ:Pythonのルートディレクトリ(python.exe用)とScriptsサブフォルダ(pip、pytestなどのツール用)。
システムのプロパティから設定する(GUI)
- Win + Rを押して
sysdm.cplと入力し、Enterを押す。 - 詳細設定 → 環境変数に移動。
- ユーザー環境変数のPathを選択して編集をクリック。
- 新規をクリックして、2つのパスを別々の行に追加:
C:\Users\YourName\AppData\Local\Programs\Python\Python312 C:\Users\YourName\AppData\Local\Programs\Python\Python312\Scripts
- すべてのダイアログで**OK**をクリック。
### PowerShellから設定する(より速い方法)
実際のPythonの場所に置き換えてください
$pythonPath = "C:\Users$env:USERNAME\AppData\Local\Programs\Python\Python312" $scriptsPath = "$pythonPath\Scripts"
[System.Environment]::SetEnvironmentVariable( "Path", $env:Path + ";$pythonPath;$scriptsPath", [System.EnvironmentVariableTarget]::User )
実行後はターミナルを閉じて再度開いてください——現在のセッションには変更が反映されません。
## 修正4:Python 2とPython 3の競合
環境によっては`python`がPython 2に、`python3`がPython 3に割り当てられているケースがあります。実際に何がインストールされているか確認しましょう:
where python where python3 where py
Python 3だけを使いたい場合、PATHの中でPython 3のディレクトリがPython 2のディレクトリよりも**前**に来るようにしてください。「環境変数」ダイアログを開いて**「上へ移動」**ボタンで順番を変更できます。
## 修正できたか確認する
**新しい**ターミナルを開いて——古いものは使わずに——以下の3つを実行してください:
python --version python -c "import sys; print(sys.executable)" pip --version
期待される出力:
Python 3.12.x C:\Users\YourName\AppData\Local\Programs\Python\Python312\python.exe pip 24.x.x from ... (python 3.12)
3つすべて動作していれば完了です。
## それでも直らない場合
Windowsが`python`コマンドを横取りして、Microsoft Storeにリダイレクトしていることがあります。実際にどのバイナリが実行されているか確認しましょう:
PowerShellで実行
Get-Command python | Select-Object Source
Sourceに`C:\Users\...\AppData\Local\Microsoft\WindowsApps\python.exe`のようなパスが表示されていますか?それはスタブ——Pythonを実行する代わりにStoreを開く偽のプレースホルダー——です。無効化する方法:
- **設定 → アプリ → アプリの詳細設定 → アプリ実行エイリアス**を開く。
- **python.exe**と**python3.exe**をオフに切り替える。
- ターミナルを再起動して再試行する。
スタブを無効化することで、WindowsはPATHにある本物のPythonバイナリを使うようになります。

