ターミナルで python と打つと zsh: command not found: python と表示される。まず python3 --version を試してください。版が表示されれば、Pythonは入っていて、python という名前が無いだけです。そのまま python3 を使えば動きます(pipは python3 -m pip)。
python3 --version
python3 script.py
python3 -m pip install パッケージ名
python3 まで command not found になる場合は原因が別なので、後半の節へ進んでください。
以下は、このサイトの運営に使っているMac(macOS 26.6.2)で、2026年10月19日に一時フォルダで再現したものです。このMacはふだんAnacondaが python を用意しているので、Anacondaや設定ファイルを読み込まない素のzsh(env -i zsh -f)を使って、何も足していないmacOSの状態を作りました。設定ファイルは一切書き換えていません。
macOSには python という名前のコマンドが無い
環境変数を空にし、設定ファイルも読まないzshで試した結果です。
$ env -i zsh -f -c "echo PATH=\$PATH; python --version"
PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin
zsh:1: command not found: python
$ env -i zsh -f -c "python3 --version; command -v python3"
Python 3.9.6
/usr/bin/python3
$ env -i zsh -f -c "which -a python python3 pip pip3"
python not found
/usr/bin/python3
/usr/bin/pip3
python3 と pip3 は /usr/bin にありますが、python はどこにもありません(このときの pip も単独で試すと pip not found でした)。ファイルを直接見ても同じです。
$ ls -l /usr/bin/python /usr/bin/python3
ls: /usr/bin/python: No such file or directory
-rwxr-xr-x 78 root wheel 118640 8月 13 11:51 /usr/bin/python3
以前のmacOSには /usr/bin/python としてPython 2.7が入っていましたが、macOS 12.3で削除されました。それ以降、macOSが用意する名前は python3 だけです。終了コードは127で、これはシェルが「その名前の実行ファイルをPATHの中に見つけられなかった」ことを表します。Pythonが壊れているわけではありません。
このMacで python が使えている理由
ふだんのターミナルでは、このMacでも python が動きます。理由を確かめると、Anacondaが先頭にいるからでした。
$ which -a python python3
/Users/me/opt/anaconda3/bin/python
/Users/me/opt/anaconda3/bin/python3
/usr/bin/python3
$ type python
python is /Users/me/opt/anaconda3/bin/python
ということは、Anacondaが外れると python は消えます。素のzshでcondaだけを読み込み、base 環境を有効化してから conda deactivate した結果です。
$ env -i HOME=$HOME PATH=/usr/bin:/bin zsh -f -c "eval \"\$(\$HOME/opt/anaconda3/bin/conda shell.zsh hook)\"; conda activate base; which python; python --version; conda deactivate; which python; python --version"
/Users/me/opt/anaconda3/bin/python
Python 3.9.7
python not found
zsh:1: command not found: python
「昨日まで python で動いていたのに」という場合は、Anacondaをアンインストールした、condaの自動有効化を切った、Anacondaを読み込まない別のシェルやツールから実行した、のどれかを疑います。どのPythonが動いているかの確認はpip3がどのPythonを指しているか確認する記事で詳しく書いています。
Homebrewで入れたPythonも、python という名前は増やしません。このMacのHomebrewは python@3.11 と python@3.12 で、/opt/homebrew/bin にあるのは python3.11 と python3.12 という数字付きの名前だけでした。
$ env -i PATH=/opt/homebrew/bin:/usr/bin:/bin zsh -f -c "which -a python python3 python3.12; python3 --version"
python not found
/usr/bin/python3
/opt/homebrew/bin/python3.12
Python 3.9.6
Homebrewを先頭に置いても、python3 はmacOS側の3.9.6のままです。Homebrewの3.12を使うには python3.12 と打つ必要があります。
python という名前で動かしたいとき
手順書が python で書かれていてそのまま実行したい、という場合の方法です。どちらも設定ファイルを変えずに試せます。
仮想環境を使う
仮想環境の bin には python と python3 の両方が作られます。有効化している間だけ python が使えます。
$ env -i zsh -f -c "/usr/bin/python3 -m venv v && source v/bin/activate && which python && python --version; deactivate; python --version"
/private/tmp/itm66.2tJE/v/bin/python
Python 3.9.6
zsh:1: command not found: python
$ ls v/bin
activate
activate.csh
activate.fish
Activate.ps1
pip
pip3
pip3.9
python
python3
python3.9
deactivate した直後に、また command not found に戻っています。仮想環境を使っているプロジェクトで突然 python が見つからなくなったら、まず有効化が切れていないかを見ます。有効化そのものが失敗する場合はvenvが有効化できないときの記事を、VS Codeが仮想環境を拾わない場合はVS Codeで仮想環境が自動認識されない記事を見てください。
Homebrewの libexec/bin をPATHに足す
Homebrewは数字なしの python や pip を、各Pythonの libexec/bin に置いています。このフォルダをPATHの先頭に足すと python が使えます。
$ env -i PATH="/opt/homebrew/opt/python@3.12/libexec/bin:/usr/bin:/bin" zsh -f -c "which python; python --version; python -m pip -V"
/opt/homebrew/opt/python@3.12/libexec/bin/python
Python 3.12.13
pip 26.1.2 from /opt/homebrew/lib/python3.12/site-packages/pip (python 3.12)
ここで1つ注意があります。Homebrewの説明では場所を $(brew --prefix python)/libexec/bin と書いていますが、このMacで brew --prefix python を実行すると、入っていない python@3.15 の場所が返りました。
$ brew --prefix python
/opt/homebrew/opt/python@3.15
$ ls /opt/homebrew/opt/python@3.15/libexec/bin
ls: /opt/homebrew/opt/python@3.15/libexec/bin: No such file or directory
brew --prefix python は、Homebrewが現在の既定としている版の場所を返すためです。版指定の python@3.12 だけを入れている場合は、brew --prefix python@3.12 のように版を付けて場所を確かめてから使ってください。
この方法は常に python が使えるようになる反面、Anacondaや仮想環境と並んだときにどれが動いているか分かりにくくなります。このMacのように複数のPythonがある場合、スクリプトやメモには python3 か python3.12 と書いておくほうが、あとで迷いません。入れたライブラリが見えなくなったときはimportできない理由の記事が参考になります。
python3 まで見つからない場合
zsh: command not found: python3 の場合は、まずPATHを通さずに直接実行してみます。
/usr/bin/python3 --version
版が表示されれば、Pythonはあるのに見つけられていない状態です。原因はPATHにあります。
PATHを上書きしてしまった
よくあるのが、設定ファイルで export PATH=... と書いたときに、末尾の :$PATH を付け忘れるケースです。素のzshで、その書き方をその場だけ試した結果です。
$ env -i HOME=$HOME zsh -f -c "export PATH=/opt/homebrew/bin; python3 --version; ls; echo PATH=\$PATH"
zsh:1: command not found: python3
zsh:1: command not found: ls
PATH=/opt/homebrew/bin
$ env -i HOME=$HOME zsh -f -c "export PATH=/opt/homebrew/bin:\$PATH; python3 --version; ls -d . && echo ls_ok"
Python 3.9.6
.
ls_ok
python3 だけでなく ls まで見つからなくなっていれば、PATHを丸ごと上書きしています。~/.zshrc などで export PATH= の行を探し、既存のPATHを残す形(...:$PATH)に直してから、新しいターミナルを開きます。
Homebrew の場所がPATHに入っていない
素のzshの既定のPATHには /opt/homebrew/bin が入っていないため、python3.12 は見つかりませんでした。
$ env -i zsh -f -c "python3.12 -m venv v && source v/bin/activate && which python && python --version; deactivate; python --version"
zsh:1: command not found: python3.12
zsh:1: command not found: deactivate
zsh:1: command not found: python
Homebrewで入れたのに見つからない場合は、Homebrewのインストール手順にある brew shellenv の設定が済んでいるかを確認します。Apple シリコンのMacでは、Homebrewは /opt/homebrew に入ります。
/usr/bin/python3 の中身は開発者ツールによって変わる
/usr/bin/python3 は本物のPythonではなく、選ばれている開発者ツールの中のPythonへ処理を渡す入口です。このMacではXcodeが選ばれていて、実体はXcodeの中にありました。
$ xcode-select -p
/Applications/Xcode.app/Contents/Developer
$ /usr/bin/python3 -c "import sys;print(sys.executable)"
/Applications/Xcode.app/Contents/Developer/usr/bin/python3
$ DEVELOPER_DIR=/Library/Developer/CommandLineTools /usr/bin/python3 -c "import sys;print(sys.executable, sys.version.split()[0])"
/Library/Developer/CommandLineTools/usr/bin/python3 3.9.6
XcodeとCommand Line Toolsの両方がある場合、どちらの3.9.6が動くかは xcode-select の設定で決まります。/usr/bin/python3 --version も No such file or directory になる場合は、開発者ツール自体が入っていないので、xcode-select --install でCommand Line Toolsを入れるか、Homebrewで python@3.12 などを入れます(このMacには両方入っているため、未導入の状態は再現していません)。
Pythonの実行で command not found ではなく permission denied が出る場合は、zsh: permission denied の記事を参照してください。
参考にした公式ドキュメント
- macOS Monterey 12.3 Release Notes(Python 2.7 の削除)— Apple Developer
- Language Runtimes and Packages(python3 と libexec/bin)— Homebrew Documentation
- Installation(Apple シリコンは /opt/homebrew)— Homebrew Documentation
- macOS で Python を使う — Python ドキュメント
- venv — 仮想環境の作成 — Python ドキュメント
検証した環境
この記事の調査・再現・執筆は、運営者の指示のもとでAIエージェント(AnthropicのClaude)が行い、公開するかどうかは運営者が決めています。載せた出力は、そのAIエージェントがこのMacで実際にコマンドを実行して得たものです。
- macOS 26.6.2(Apple シリコン)、zsh、Homebrew 7.0.9
- ふだんのPATHの先頭:Anaconda の Python 3.9.7(python と python3 の両方を提供)
- /usr/bin/python3 → Xcode 付属の Python 3.9.6(Command Line Tools 側にも 3.9.6 あり)
- Homebrew の python@3.11(3.11.14)と python@3.12(3.12.13)
- 検証日:2026年10月19日。素のzshは env -i zsh -f で起動し、仮想環境は /tmp の一時フォルダに作成。設定ファイルの編集や sudo は行っていません
コメントを残す