Pythonのプログラミングに慣れてくると、実行ファイル「python.exe」を触る機会が増えます。
その後、エラーやトラブルを解決するためにウェブで調べると「py.exe」の存在を知ります。
この記事では、「python.exeなら知ってるけど、py.exeって何?」という方に向けて解説しています。
py.exeを知ることで、pythonの開発環境について理解を深めることができます。
それによって、トラブルが起きた時に解決しやすくなります。
初心者向けの説明となるため、分かりやすさを重視している分、厳密さには欠けますので予めご了承ください。
python.exeとpy.exeの違い
通常、pythonを実行する(スクリプトを実行する)というと、内部的にはpython.exeが実行されています。
しかし、これとは別にpy.exeというものが存在します。
py.exeとは何者でしょうか?
pythonランチャー
py.exeとは?
python3.3から新たに登場したのが「pythonランチャー」で、その大元が、py.exeというわけです。
「だから何?」と思われても、しばし読み進めてください。
この記事の本当の価値はまだ先にあります。
pythonランチャーでできること
pythonランチャーで何ができるのか?というと、
- PATHを気にせずPythonのスクリプトを実行できる
- 複数のバージョンのPythonがインストールされている環境で、バージョンを指定して実行できる
- バージョンを指定してライブラリをインストールできる
という点があります。
PythonのPATH問題
ところで、Pythonをインストールする際、「Add python.exe to PATH」にチェックを入れるかどうかという問題があります。(下図)
人によって「チェックを入れた方が良い」という人と「チェックを入れない方が良い」という人に分かれますが、
「チェックを入れた方が良い」という理由は、
- スクリプトを実行するときにファイル名だけで実行できる
- コマンドプロンプトでpythonと入れるだけでPythonが実行できる
などがあります。
PATHを通していない場合
ここにチェックを入れることで、システム環境変数にpython.exeが登録されるのですが、チェックを入れないとPATHがないのでコマンドプロンプトでpythonコマンドが実行できません。
C:\papa3> python
PATHを通している場合
次に、PATHがある場合にコマンドプロンプトでpythonコマンドが実行できることを確認しましょう。
C:\papa3> python
しかし、実はPATHを通していなくても、Pythonのスクリプトは実行することができます。
内部的なpy.exeの役割
次のようにpythonのスクリプトを実行すると、
C:\papa3> app.py
内部的にはpy.exeが「最新のバージョンのpython.exe」を呼び出すという仕組みになっています。
例えば、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
を実行すると、
というように確認することができます。
こちらについては、別の記事で詳しく説明していますので、合わせてご覧ください。
もう少し補足
ちなみに、コマンドプロンプトでpyコマンドとpythonコマンドを実行してみると面白いことが分かります。
説明用に、Windowsのデフォルトのpythonのバージョンを3.7に変更しておきます。
この「デフォルトのバージョンを変更する」というやり方については別の記事を用意していますので、興味がある方はご覧ください。
まずは、pyコマンドを実行してみます。
C:\User> py
結果は「最新バージョンのpython」が起動します。
同じように、pythonコマンドを実行してみます。
C:\User> python
結果は「Windowsのデフォルトに設定されているバージョンのpython」が起動します。
もし、WindowsのデフォルトのPythonバージョンが最新のものと一緒なら、pythonコマンドを実行してもpyコマンドを実行しても同じ結果になります。
あくまでそのPCの環境(デフォルトの設定)によると考えてください。
まとめ
今回はpython.exeとpy.exeの違いとそれぞれの役割を解説し、pyコマンドの便利な使い方も紹介しました。
結局、「この話を知らなくてもPythonが使えれば良いのでは?」と考える人は多いと思います。
しかし、問題が起きたときにpyコマンドが使えると便利な場面は意外と多いのです。
py.exe(Pythonランチャー)のおかげで、「実はPATHを通していなくても問題ない」というのは意外と知らない方も多いようです。
また、pyコマンドはとても便利なので、ぜひ使いこなしてください!
今回は本当に「ざっくり」と解説しましたが、もっと知りたいという方はぜひフォームやコメントでお知らせください。
Pythonについて詳しく知りたいという方は、こちらの書籍もおススメです。
それでは、ステキなPythonライフを!