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
は有効に機能するため、書きましょう。