MENU

`python`?`py`?`python3`?もう迷わない!コマンド優先順位の真実

「よし、新しいPythonプロジェクトを始めるぞ!」意気揚々とターミナルを開き、コマンドを打ち込もうとした瞬間、手が止まる。pythonpy?それともpython3?――どれを使えばいいのか、頭の中が真っ白になる。

この、まるで暗闇の中を手探りで進むような感覚、あなたも経験したことはありませんか?僕もそうでした。初めてPythonを学び始めた頃、このコマンドの多さに何度も躓き、貴重な時間を無駄にしてきました。

ある日のこと。僕は最新のPython3.9で書かれたWebアプリケーションを動かそうとしていました。先輩から渡されたコードをコピーし、意気揚々とpython main.pyと実行。しかし、画面に現れたのは見慣れないSyntaxErrorの嵐。「なぜだ…こんなはずじゃなかった…!」焦りながらエラーメッセージを読み進めると、どうやらPython2系で実行されているらしい。まさか、自分の環境に古いPython2が残っているとは夢にも思っていませんでした。

慌ててpython3 main.pyと打ち直すと、無事に動いた。ホッと胸をなでおろしたのも束の間、今度は別のプロジェクトでpy main.pyを使っている友人の話を聞いて、また不安が押し寄せてきたのです。「結局、僕のやり方で合ってるのか?」「このままじゃ、いつかまた同じ失敗を繰り返すんじゃないか…」コマンド一つで、こんなにも開発が停滞し、自信を失うなんて。あの時感じた、どうしようもない焦燥感と孤独感は、今でも鮮明に覚えています。

その「迷いの沼」から抜け出す鍵は、たった一つ。

それは、「Pythonコマンドの優先順位と、それぞれの役割を正しく理解する」ことでした。まるで、たくさんの鍵があるのに、どの鍵がどのドアを開けるのか分からない部屋に閉じ込められているような状態から、一筋の光が差し込んだ瞬間でした。

混乱の正体:なぜ複数のコマンドがあるのか?

そもそも、なぜこんなにもコマンドが乱立しているのでしょうか?その背景には、主に以下の理由があります。

1. Python2とPython3の歴史的経緯:

Pythonはメジャーバージョンアップで互換性が失われたため、両バージョンを共存させる必要がありました。古いMacや一部のLinuxではPython2が残っていることがあり、pythonがPython2を指し、python3がPython3を指すように設定されているのが一般的です。(※最新のmacOSではPython2は削除されていますが、pythonと打っても何も起きない、あるいはエラーになるため、やはりpython3を使うのが正解です)

2. OSごとの慣習とPATH設定:

コマンドラインでpythonと入力した際に、どの実行ファイルが呼び出されるかは、環境変数PATHに登録されている順序によって決まります。これがOSやインストール方法によって異なるため、一貫した挙動を期待できないのです。

3. Windows向けのPython Launcher (py) の登場:

Windows環境では、pyという特別なランチャーが提供されています。これは、複数のPythonバージョンがインストールされていても、自動的に最新バージョンを選んだり、py -3.8 main.pyのように明示的にバージョンを指定して実行したりできる非常に便利なツールです。

あなたの環境で「結局どれを使えばいい?」

では、あなたの環境ではどのコマンドを使うべきなのでしょうか?

1. Windowsユーザーの場合:迷わず「py」を使いましょう!

WindowsにPythonをインストールすると、Python Launcher (py.exe) が自動的にセットアップされます。これは非常に賢く、デフォルトで最新のPython3系を呼び出してくれます。

  • py script.py:最新のPython3系で実行。
  • py -3.8 script.py:Python3.8で実行。
  • py -2 script.py:Python2系で実行(もしインストールされていれば)。

Python Launcherは、PATH設定に依存せず、常に期待通りのバージョンを呼び出してくれます。Windowsユーザーにとってはまさに救世主です。

2. Mac/Linuxユーザーの場合:基本は「python3

MacやLinuxでは、システムがPython2を依存していることが多いため、pythonコマンドがPython2を指している場合があります。意図しないバージョンでの実行を防ぐためにも、Python3系のスクリプトを実行する際は必ずpython3を使う習慣をつけましょう。

  • python3 script.py:Python3系で実行。
  • もしpythonがPython3を指すように設定されている環境でも、明示的にpython3を使うことで、将来的な環境変化による混乱を防げます。

最終確認!あなたの「`python`」はどこを指している?

それでも不安な時は、以下のコマンドで確認してみましょう。

  • Mac/Linuxの場合:

“`bash

which python

which python3

“`

これにより、それぞれのコマンドがどの実行ファイルを指しているか(パス)が表示されます。

  • Windowsの場合:

“`bash

where python

where py

“`

Windowsではwhereコマンドを使います。複数のパスが表示される場合、上から順に優先順位が高いことを意味します。

仮想環境を味方につける

さらに一歩進んだ解決策が、仮想環境の活用です。venvcondapoetryなどを使えば、プロジェクトごとに独立したPython環境を構築できます。仮想環境をアクティベートすれば、その環境内でpythonと打つだけで、そのプロジェクト専用のPythonが起動します。これにより、システム全体のPythonバージョンに左右されず、常に安定した開発が可能になります。

「仮想環境に入れば、Windowsの人もMacの人も、共通して python コマンドだけでOKになります!」

もう「あの迷い」に囚われる必要はありません

Pythonコマンドの優先順位と役割を理解することは、あなたの開発体験を劇的に改善します。もう、どれを使えばいいか分からず、エラーに怯える必要はありません。自信を持ってコマンドを打ち込み、スムーズにプロジェクトを進めることができるでしょう。

かつて僕が感じたあの焦燥感は、今や「学び」へと昇華されました。この記事が、あなたがPythonの「迷いの沼」から抜け出し、より快適な開発ライフを手に入れるための一助となれば幸いです。さあ、あなたのPythonライフを、今日からもっと「確信」に満ちたものに変えていきましょう!