macOSやLubuntuなどを使っていると、pythonはコマンドして入っていない、と表示されます。
よく、調べものをすると、python表記のコマンドが多いのですが、pythonではなくpython3がコマンドとして入っているのはどうしてですか?
1. Pythonとpython
まず、Pythonは言語名です。python や python3 は コマンド名であり、OS がどの実行ファイルを指すかを決めています。
現在の macOS や Lubuntu(Ubuntu 系 Linux)では、python コマンドが最初から存在しない、または存在しても Python 3 を指さない、という構成が標準になっています。一方で python3 コマンドは最初から用意されている、または公式に推奨されています。
1.1. Python 2系列
理由の中心は Python 2 と Python 3 の互換性問題です。
Python 2(正式名称: Python 2.x)と Python 3(Python 3.x)は文法や動作が互換ではなく、同じ python という名前で両方を扱うと深刻な混乱が起きました。
ちなみに、Python 2 は 2020 年に公式サポートが完全終了しています。
そのため OS 側では、
「python という曖昧な名前を最初から用意しない」
「明示的に python3 を使わせる」
という方針に切り替えました。
macOS や Ubuntu 系がこの方針を強く採用しています。
1.2. pythonコマンド
一方で、インターネット上の多くの説明や古い記事で python と書かれているのは、主に次の二つです。
ひとつは 過去の慣習です。
Python 2 が主流だった時代は python = Python 2 が当たり前でした。
もうひとつは 環境依存の前提です。
Windows や pyenv(Python のバージョン管理ツール)などを使っている環境では、python が Python 3 を指すように設定されていることが多く、その前提で書かれているケースです。
2. pythonというシンボリックリンクもあるが・・・・
では、どう使うのが安全かという点ですが、現状では 常に python3 を使うのが事実上の正解です。スクリプト実行、REPL 起動、pip 使用時も python3 / pip3 を明示すると誤動作を避けられます。
もし python でも使いたい場合は、python を python3 に割り当てる設定(シンボリックリンクやエイリアス)も可能です。
しかし、OS 管理ツールの広い範囲に影響を与えることがあるため、注意が必要です。
まとめますと、python が無いのは不具合ではなく 意図された設計です。python3 がある環境では、それを使うのが正しく、将来も安全です。