7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python(Windows環境)のshebangについて

Last updated at Posted at 2022-05-05

shebangとは下記プログラムの一行目にあるように。
プログラムの先頭行で#!ではじまるもので。

helloworld.py
#!/usr/bin/python3

#HelloWorldを表示するSampleプログラム
print("Hello World!")

shebangLinuxUnixで実行系を指定する仕組みとなりますが。

Windows環境にインストールされているPythonランチャ(py.exe)はPythonスクリプトに記載されているshebangを適切に処理してくれます。

このためPythonスクリプトではWindows環境でもshebangを適切に利用されます。

ドキュメント

Windows で Python を使うのドキュメントの中にshebangについて記載されている部分があります。

シェバン (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)で実行してみます。

helloworld_shebang.py
#!/usr/bin/python3.9

#HelloWorldを表示するSampleプログラム
print("Hello World!")

image.png

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のバージョン一覧を表示されます。

image.png

上記の例では3.10の64bitがインストールされている事がわかります。

なお3.9と3.10をインストールした環境では下記のような表示となります。

image.png

【余談】Pythonランチャが導入されたのでPython 3.3から

Windows環境でPythonの処理系を切り替えてくれるPythonランチャ(py.exe)について。
Pythonのバージョン3.3から追加された機能になります。

インストーラーのデフォルトオプションでは、インストールしたpython.exeに直接PATHを通さない設定となっているため。

個人的にはWindows環境のPythonではpy.exeを利用するのが推奨されているような気はします。

総評

Windows環境のPythonでもshebangは有効に機能するため、書きましょう。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?