かゆい所に手が届く解説

【ざっくり解説】py.exeって何?

Pythonのプログラミングに慣れてくると、実行ファイル「python.exe」を触る機会が増えます。

その後、エラーやトラブルを解決するためにウェブで調べると「py.exe」の存在を知ります。

この記事では、「python.exeなら知ってるけど、py.exeって何?」という方に向けて解説しています。

py.exeを知ることで、pythonの開発環境について理解を深めることができます。

それによって、トラブルが起きた時に解決しやすくなります。

初心者向けの説明となるため、分かりやすさを重視している分、厳密さには欠けますので予めご了承ください。

python.exeとpy.exeの違い

通常、pythonを実行する(スクリプトを実行する)というと、内部的にはpython.exeが実行されています。

python.exeのファイルの場所
この例はpython3.9の場合ですが、他のバージョンでも同じようにpython.exeがあります

しかし、これとは別にpy.exeというものが存在します。

py.exeとは何者でしょうか?

pythonランチャー

py.exeとは?

python3.3から新たに登場したのが「pythonランチャー」で、その大元が、py.exeというわけです。

py.exeの場所
py.exeはC:\Windowsの直下にあります

「だから何?」と思われても、しばし読み進めてください。

この記事の本当の価値はまだ先にあります。

pythonランチャーでできること

pythonランチャーで何ができるのか?というと、

  • PATHを気にせずPythonのスクリプトを実行できる
  • 複数のバージョンのPythonがインストールされている環境で、バージョンを指定して実行できる
  • バージョンを指定してライブラリをインストールできる

という点があります。

PythonのPATH問題

ところで、Pythonをインストールする際、「Add python.exe to PATH」にチェックを入れるかどうかという問題があります。(下図)

pythonインストール時の注意点
デフォルトではチェックが入っていない

人によって「チェックを入れた方が良い」という人と「チェックを入れない方が良い」という人に分かれますが、
「チェックを入れた方が良い」という理由は、

  • スクリプトを実行するときにファイル名だけで実行できる
  • コマンドプロンプトでpythonと入れるだけでPythonが実行できる

などがあります。

PATHを通していない場合

ここにチェックを入れることで、システム環境変数にpython.exeが登録されるのですが、チェックを入れないとPATHがないのでコマンドプロンプトでpythonコマンドが実行できません

C:\papa3> python
コマンドプロンプトでpythonが実行できない図

PATHを通している場合

次に、PATHがある場合にコマンドプロンプトでpythonコマンドが実行できることを確認しましょう。

C:\papa3> python
python.exeにPATHが通っている場合の挙動

しかし、実はPATHを通していなくても、Pythonのスクリプトは実行することができます

内部的なpy.exeの役割

次のようにpythonのスクリプトを実行すると、

C:\papa3> app.py


内部的にはpy.exeが「最新のバージョンのpython.exe」を呼び出すという仕組みになっています。

python.exeにPATHが通っていなくてもスクリプトが実行できる図

例えば、PC内に複数のPythonがインストールされているとします。

PC内に複数のPythonがインストールされている場合の確認方法
*py -0pコマンドでPCに入っているPythonのすべてのバージョンとそのパスが確認できます

このとき、python.exeにPATHが通っていなくてもスクリプトが実行できるのは、pythonランチャ = py.exeのおかげなのです。

そして、pyコマンドで呼び出されるpythonのバージョンは「最新バージョン」となります。

とても便利なpyコマンド

Windowsに複数のPythonがインストールされている状態で、pipコマンドを使ったことはありますか?

代表的なものは、pip install などです。

例えば、PC内に「3.7」と「3.9」と「3.11」が混在しているとき、bottleというフレームワークを「3.9」に入れたいとします。

このとき、通常通りのコマンドでインストールすると、

pip install bottle

となります。

しかし、これでは「どのバージョンのPythonにインストールされたかワカラナイ」という問題が起きます。

こんなときも、pyコマンドが便利です。

Pythonのバージョンを指定してインストールするときは、

py -3.9 -m pip install bottle

とすることで、「Python3.9にbottleをインストール」することができるのです。

また、上の例でも紹介したように、WindowsにインストールされているすべてのPythonのバージョンとその場所(パス)を知りたいときは、

py -0p

を実行すると、

Pythonが複数バージョンインストールされている場合のデフォルトのバージョンの確認方法

というように確認することができます。

こちらについては、別の記事で詳しく説明していますので、合わせてご覧ください。

もう少し補足

ちなみに、コマンドプロンプトでpyコマンドとpythonコマンドを実行してみると面白いことが分かります。

説明用に、Windowsのデフォルトのpythonのバージョンを3.7に変更しておきます

この「デフォルトのバージョンを変更する」というやり方については別の記事を用意していますので、興味がある方はご覧ください。

まずは、pyコマンドを実行してみます。

C:\User> py

結果は「最新バージョンのpython」が起動します。

pyコマンドを実行した結果
pyコマンドを実行した結果、最新バージョンのインタラクティブシェルが起動する

同じように、pythonコマンドを実行してみます。

C:\User> python

結果は「Windowsのデフォルトに設定されているバージョンのpython」が起動します。

pythonコマンドはデフォルトのpythonのバージョンが呼び出される
pythonコマンドを実行した結果、デフォルトに設定されているバージョンのインタラクティブシェルが起動する

もし、WindowsのデフォルトのPythonバージョンが最新のものと一緒なら、pythonコマンドを実行してもpyコマンドを実行しても同じ結果になります。

あくまでそのPCの環境(デフォルトの設定)によると考えてください。

まとめ

今回はpython.exeとpy.exeの違いとそれぞれの役割を解説し、pyコマンドの便利な使い方も紹介しました。

結局、「この話を知らなくてもPythonが使えれば良いのでは?」と考える人は多いと思います。

しかし、問題が起きたときにpyコマンドが使えると便利な場面は意外と多いのです。

py.exe(Pythonランチャー)のおかげで、「実はPATHを通していなくても問題ない」というのは意外と知らない方も多いようです。

また、pyコマンドはとても便利なので、ぜひ使いこなしてください!

今回は本当に「ざっくり」と解説しましたが、もっと知りたいという方はぜひフォームやコメントでお知らせください。

Pythonについて詳しく知りたいという方は、こちらの書籍もおススメです。

それでは、ステキなPythonライフを!

ABOUT ME
papa3
某教育機関で現役の講師をしながら、ブログとYouTubeでプログラミングの情報を発信しています。個人でもウェブアプリケーション開発と運営をしながら本業収入<副業を目指しています!

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です