macOSやLinuxのターミナルを開き、いざプログラミングを始めようとしてpythonコマンドを入力した際、zsh: command not found: pythonというエラーメッセージが表示されて戸惑った経験はないでしょうか。
かつては多くのOSで標準搭載されていたPythonですが、近年のシステム環境の変化に伴い、このエラーは非常に一般的なものとなりました。
本記事では、このエラーが発生する根本的な原因を紐解き、2026年現在の標準的な開発環境に合わせた最適な解決策を詳しく解説します。
エラーが発生する背景と根本的な原因
ターミナルに「command not found」と表示されるのは、現在使用しているシェル(zsh)が、入力されたコマンドに対応する実行ファイルを見つけられないことを意味します。
なぜ以前まで動いていたpythonコマンドが急に見つからなくなったのか、その背景にはOSの仕様変更とPythonの世代交代があります。
Python 2のサポート終了とOSからの削除
かつて、多くのオペレーティングシステム(特にmacOSや主要なLinuxディストリビューション)には、OSの内部ツールが依存するプログラムとしてPython 2.7が標準でインストールされていました。
しかし、Python 2系は2020年をもって公式サポートが終了しました。
これを受け、AppleはmacOS Monterey 12.3以降、OS標準のPython 2.7を完全に削除しました。
現在のモダンなOS環境では、セキュリティリスクの回避とメンテナンス性の向上のため、「python」という名前のコマンドをあえて空席にする構成が一般的になっています。
これは、開発者が意図せず古いPython 2系を使用してしまう事故を防ぐための措置でもあります。
zshのパス(PATH)設定の問題
コマンドが実行される際、シェルは環境変数PATHに登録されているディレクトリを順番に探しに行きます。
もしPythonがインストールされていたとしても、そのインストール先がPATHに含まれていなければ、シェルはプログラムを見つけることができず、このエラーを返します。
zshはmacOSのデフォルトシェルとして採用されていますが、bashとは設定ファイルの読み込みルールが異なるため、移行のタイミングで設定が漏れてしまうケースも少なくありません。
解決策1:python3コマンドの使用を確認する
最もシンプルかつ確実な解決策は、pythonではなくpython3と入力することです。
現代のシステムでは、Python 3系は明示的にpython3という名前でインストールされています。
インストール状況の確認手順
まずは、システムにPython 3が導入されているかを確認しましょう。
以下のコマンドをターミナルに入力してください。
# Python 3のバージョンを確認
python3 --version
実行結果が以下のように表示されれば、Python 3は正しくインストールされています。
Python 3.12.x (あるいは 3.13.x など)
もしこのコマンドでも「command not found」と表示される場合は、Python自体がシステムにインストールされていません。
公式サイト(python.org)や、後述するパッケージマネージャーを利用してインストールを行う必要があります。
解決策2:zshのエイリアス設定でpythonコマンドを有効化する
毎回「3」を付けて入力するのが手間である場合や、古い教材などで「python」と入力する指示がある場合は、エイリアス(別名)を設定することで解決できます。
エイリアスを設定すると、pythonと入力した際に自動的にpython3が実行されるようになります。
.zshrcファイルの編集
zshの設定は、ホームディレクトリにある.zshrcというファイルで行います。
以下の手順で設定を追加しましょう。
- ターミナルを開き、テキストエディタ(nanoやvim)でファイルを開きます。
- ファイルの末尾にエイリアス設定を追記します。
- ファイルを保存して閉じます。
使用するコマンド例:
# .zshrcを編集する(nanoエディタを使用する場合)
nano ~/.zshrc
ファイル内に以下の1行を追記してください。
# pythonコマンドでpython3を起動するように設定
alias python='python3'
設定の反映
ファイルを保存しただけでは、現在のターミナルウィンドウに設定が反映されません。
以下のコマンドを実行して設定をリロードするか、ターミナルを一度閉じて再起動してください。
# 設定ファイルを即時反映させる
source ~/.zshrc
これで、python --versionと入力した際に、Python 3のバージョンが表示されるようになります。
解決策3:pyenvによるバージョン管理の導入
本格的な開発を行う場合、プロジェクトごとにPythonのバージョンを切り替える必要が出てくることがあります。
その際、システムのPythonを直接操作するのではなく、pyenvのようなバージョン管理ツールを導入するのがプロフェッショナルな選択です。
pyenvの利点
pyenvを使用すると、システム環境を汚すことなく、任意のバージョンのPythonを複数インストールできます。
また、特定のディレクトリに入ったときだけ自動的にバージョンを切り替えるといった高度な運用も可能です。
| 項目 | システム標準Python | pyenvによる管理 |
|---|---|---|
| バージョン変更 | 困難 | 自由自在 |
| システムへの影響 | 高い(OSが不安定になるリスクあり) | 無視できるほど低い |
| 複数バージョンの共存 | 複雑 | 非常に容易 |
pyenvのインストールと設定例
macOSであれば、Homebrewを使用して簡単に導入できます。
# Homebrewでpyenvをインストール
brew install pyenv
インストール後、.zshrcに以下の初期化設定を追記する必要があります。
# pyenvの初期化設定
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
追記後、source ~/.zshrcを実行すれば準備完了です。
特定のバージョン(例:3.12.0)をインストールしてグローバルに設定する手順は以下の通りです。
# 利用可能なバージョンを確認
pyenv install --list
# 特定のバージョンをインストール
pyenv install 3.12.0
# 全体で使用するバージョンを指定
pyenv global 3.12.0
実行結果の確認:
python --version
# 出力: Python 3.12.0
このように、pyenvを正しく設定すれば、command not foundの問題を根本から解決しつつ、柔軟な開発環境を手に入れることができます。
解決策4:仮想環境(venv)の活用
エイリアスやpyenvの設定を行っても、プロジェクトごとにライブラリの依存関係が衝突することがあります。
現代のPython開発において、「グローバルな環境に直接ライブラリをインストールしない」ことは鉄則です。
仮想環境の作成手順
Python 3には標準でvenvという仮想環境作成ツールが備わっています。
プロジェクトごとに専用のPython実行環境を作成することで、コマンドの問題だけでなく環境の汚染も防ぐことができます。
# プロジェクトディレクトリに移動
cd my_project
# 仮想環境(名前は .venv が一般的)を作成
python3 -m venv .venv
# 仮想環境を有効化(アクティベート)
source .venv/bin/activate
仮想環境が有効になると、ターミナルのプロンプトの先頭に(.venv)といった表示が出ます。
この状態では、単に python と入力するだけで、その仮想環境内のPythonが呼び出されるようになります。
# 仮想環境内での確認
which python
/Users/username/my_project/.venv/bin/python
プロジェクトが終わったら、deactivateコマンドで仮想環境を抜けることができます。
この運用を徹底することで、OS側の設定に振り回されることなく安定した開発が可能になります。
PATHが通っていない場合の修正方法
もしPythonをインストールしたはずなのに、どのコマンドも効かない場合は、実行ファイルの場所がPATHに含まれていない可能性が高いです。
特にインストーラーを使ってPythonを入れた場合、手動でパスを通す作業が必要になることがあります。
実行ファイルの場所を確認する
まず、Pythonがどこにインストールされているかを探します。
find /usr/local/bin /opt -name "python3" 2>/dev/null
見つかったパスが例えば/usr/local/bin/python3であれば、その親ディレクトリである/usr/local/binがPATHに含まれているか確認します。
echo $PATH
含まれていない場合は、.zshrcに以下のように追記します。
# PATHの追加例
export PATH="/usr/local/bin:$PATH"
この設定により、zshがコマンドを探索する範囲が広がり、正しくプログラムを認識できるようになります。
まとめ
zsh: command not found: pythonというエラーは、決してあなたの操作ミスではなく、コンピューティング環境がPython 2からPython 3へと完全に移行した結果生じた必然的な変化です。
本記事で解説した内容を振り返ります。
- 原因は、OSから古いPython 2が削除され、標準コマンド名が
python3に集約されたこと。 - 最も手軽な対策は、常に
python3コマンドを使用すること。 - 利便性を求めるなら、
.zshrcにエイリアスを設定すること。 - 本格的な開発には、pyenvやvenvを活用して環境を分離・管理すること。
2026年の開発シーンにおいて、言語のバージョン管理はスキルの一部として非常に重要視されています。
このエラーをきっかけに、自分の開発環境をより強固でクリーンな構成へとアップデートしてみてください。
適切なツールを使いこなすことで、環境構築のトラブルに時間を奪われることなく、本来の目的であるプログラミングに集中できるようになるはずです。
