shebangとは下記プログラムの一行目にあるように。
プログラムの先頭行で#!ではじまるもので。
#!/usr/bin/python3
#HelloWorldを表示するSampleプログラム
print("Hello World!")
shebangはLinuxやUnixで実行系を指定する仕組みとなりますが。
Windows環境にインストールされているPythonランチャ(py.exe)はPythonスクリプトに記載されているshebangを適切に処理してくれます。
このためPythonスクリプトではWindows環境でもshebangを適切に利用されます。
ドキュメント
Windows で Python を使うのドキュメントの中にshebangについて記載されている部分があります。
PythonではOS間での移植を考慮して、Windowsのpythonランチャでは下記の仮想コマンドが利用できます。
- /usr/bin/env python
- /usr/bin/python
- /usr/local/bin/python
- python
たとえばPython 3.10.4がインストールされている環境で下記のようなバージョン3.9を指定したshebangを設定したスクリプトをPythonランチャ(py.exe)で実行してみます。
#!/usr/bin/python3.9
#HelloWorldを表示するSampleプログラム
print("Hello World!")
Requested Python version (3.9) is not installedと表示され実行が失敗しました。
これはPythonランチャがshebangで指定された3.9で実行しようとしたが、実行した端末にはPython 3.9がインストールされていなかったためエラーが出ています。
(該当端末に3.9もインストールされていれば問題なく実行される)
このようにPythonではWindowsでもshebangを設定することで、指定した処理系で処理を強制する事ができます。
現在インストールされているPythonバージョンのリストを確認する
py --list
上記、コマンドで現在Windows環境にインストールされているPythonのバージョン一覧を表示されます。
上記の例では3.10の64bitがインストールされている事がわかります。
なお3.9と3.10をインストールした環境では下記のような表示となります。
【余談】Pythonランチャが導入されたのでPython 3.3から
Windows環境でPythonの処理系を切り替えてくれるPythonランチャ(py.exe)について。
Pythonのバージョン3.3から追加された機能になります。
インストーラーのデフォルトオプションでは、インストールしたpython.exeに直接PATHを通さない設定となっているため。
個人的にはWindows環境のPythonではpy.exeを利用するのが推奨されているような気はします。
総評
Windows環境のPythonでもshebangは有効に機能するため、書きましょう。


