WindowsによるPython入門 #01: Pythonの実行

# はじめに

YouTube 動画と連動した Python 講座の記事を公開します。
今回は第一回目として、Python の実行方法の解説です。

# YouTube動画

[WindowsによるPython入門 (第一回) Pythonの実行](https://youtu.be/gtTC-EOLK2M)

# Python ランチャによる Python の実行方法

以下のような .py ファイルを適当なフォルダに作成します。

```hello.py
import sys
sys.stdout.write("python: {}".format(sys.version))
```

hello.py ファイルが存在する位置でコマンドプロンプトを起動し、以下のように、hello.py ファイルを指定して py コマンドを実行します。

```
C:\User\PythonMan\Desktop\run_test>py hello.py
python: 3.11.1 (tags/v3.11.1:a7a450f, Dec  6 2022, 19:58:39) [MSC v.1934 64 bit (AMD64)]
```

hello.py ファイルのコードが実行され、Python ランチャにより実行された Python のバージョン番号 3.11.1 が表示されました。
(注: 動画ではバージョン番号が異なりますが、動画の作成時期が古いため、その時インストールされたいたバージョンが表示されています)

# インストールされている Python のバージョン番号の一覧の確認方法

以下のコマンドで PC にインストールされている Python のバージョンの一覧が表示されます。
アスタリスクが付いているバージョンが最新版で、何も指定しない場合、このバージョンが実行されます。この場合、3.11 が最新版で py により実行されます。
(--list の他に、-0 でも同じ意味になります)

```
C:\User\PythonMan\Desktop\run_test>py --list
 -V:3.11 *        Python 3.11 (64-bit)
 -V:3.10          Python 3.10 (64-bit)
 -V:3.9           Python 3.9 (64-bit)
 -V:3.6           Python 3.6 (64-bit)
 -V:2.7
```

ちなみに、--list の後に、--list-paths を付けると、バージョン番号の後ろに Python がインストールされているパスが表示されます。
(--list-paths の他に、-0p でも同じ意味になります)

```
C:\User\PythonMan\Desktop\run_test>py --list-paths
 -V:3.11 *        C:\Users\PythonMan\AppData\Local\Programs\Python\Python311\python.exe
 -V:3.10          C:\Users\PythonMan\AppData\Local\Programs\Python\Python310\python.exe
 -V:3.9           C:\Users\PythonMan\AppData\Local\Programs\Python\Python39\python.exe
 -V:3.6           C:\Users\PythonMan\AppData\Local\Programs\Python\Python36\python.exe
 -V:2.7           C:\Python27\python.exe
```

# バージョン番号を指定した Python の実行

Python のバージョンを指定した実行方法です。
-3.6 のように、py の後ろに、バージョン番号を指定します。
指定したバージョンが実行されている事が確認出来ます。

```
C:\User\PythonMan\Desktop\run_test>py -3.6 hello.py
python: 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]

C:\User\PythonMan\Desktop\run_test>py -2.7 hello.py
python: 2.7.18 (v2.7.18:8d21aa21f2, Apr 20 2020, 13:25:05) [MSC v.1500 64 bit (AMD64)]
```

-3 を指定すると、インストールされているバージョン 3 の内、最新版が実行されます。例えば、3.6、3.9、3.10、3.11 がインストールされている場合、3.11 が最新なので、3.11 が実行されます。

```
C:\User\PythonMan\Desktop\run_test>py -3 hello.py
python: 3.11.1 (tags/v3.11.1:a7a450f, Dec  6 2022, 19:58:39) [MSC v.1934 64 bit (AMD64)]
```

# Python のバージョン番号に関して

Python では以下の 3 つのバージョン番号により構成されています。

- メジャー
- マイナー
- マイクロ

例えば、バージョンが 3.11.1 であれば、メジャーが「3」で、マイナーが「11」で、マイクロが「1」です。
以下のように、py --list-paths で表示されているバージョンを見ると分かりますが、メジャーとマイナーバージョンまでしか表示されていません。ですので、複数のマイクロバージョンをインストールする事は出来ません。
(例えば、3.11.1 と 3.11.2 のインストーラが存在したとして、どちらかしかインストール出来ません)
また、バージョンの指定では、メジャーのみか、メジャーとマイナーバージョンを指定します。

```
C:\User\PythonMan\Desktop\run_test>py --list-paths
 -V:3.11 *        C:\Users\PythonMan\AppData\Local\Programs\Python\Python311\python.exe
 -V:3.10          C:\Users\PythonMan\AppData\Local\Programs\Python\Python310\python.exe
 -V:3.9           C:\Users\PythonMan\AppData\Local\Programs\Python\Python39\python.exe
 -V:3.6           C:\Users\PythonMan\AppData\Local\Programs\Python\Python36\python.exe
 -V:2.7           C:\Python27\python.exe
```

# Python ランチャの仕組み

Python ランチャは Windows のみの仕組みですが、本来、Python を実行するには、以下のように py ではなく、インストールフォルダに存在する python.exe を実行します。

```
C:\User\PythonMan\Desktop\run_test>python hello.py
```

但し、Python をインストール時に「環境変数 PATH にインストールフォルダのパスを追加する」オプションを付けない場合、パスが通っていません。
(下図の「Add python.exe to PATH」オプション」)
パスを通してしまうと、常にパスが通った Python のバージョンが実行されてしまいます。
あえてパスを通さないような仕組みにする事で、Python ランチャではインストールされている最新版の Python が実行されるようになっています。

![installer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629087/3aa6286f-154a-673a-4cc6-82c28ddf5fb9.png)

# .py ファイル内でバージョンを指定する方法

ファイル内で実行するバージョンを指定出来ます。
以下のように、.py ファイル内の一行目に、#! python3.6 と記述します。
「#!」は、シェバンと読みます。

```hello.py
#! python3.6
import sys
sys.stdout.write("python: {}".format(sys.version))
```

コマンドプロンプトでバージョンを指定しないで実行すると、ファイル内で指定したバージョンの Python が実行されます。

```
C:\User\PythonMan\Desktop\run_test>py hello.py
python: 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]
```

Python ランチャの詳細は、以下の公式ドキュメントで確認出来ます。
Python ランチャは、バージョン 3.3 から追加されています。

[3.8. Windows の Python ランチャ](https://docs.python.org/ja/3.8/using/windows.html#launcher)

[Python Launcher for Windows](https://bitbucket.org/vinay.sajip/pylauncher/src/master/Doc/launcher.rst)

# ダブルクリックによる .py ファイルの実行に関して

.py ファイルをダブルクリックすると、ダブルクリックした .py ファイルを実行する事が出来ます。

assoc コマンドにより、.py ファイルがどのファイルに関連付けられているか確認します。
また、ftype コマンドにより、.py ファイルが、どの exe に関連付けられているかを確認します。
すると、Python ランチャである py.exe ファイルに関連付けられている事が確認出来ます。ですので、.py ファイルをダブルクリックする事で、Python ランチャにより Python が実行されます

```
C:\User\PythonMan\Desktop\run_test>assoc .py
.py=Python.File

C:\User\PythonMan\Desktop\run_test>ftype Python.File
Python.File="C:\WINDOWS\py.exe" "%L" %*
```

# インタラクティブシェルに関して

py の後に、ファイル名を指定しないとインタラクティブシェルが起動されます。
これは、式を入力すると、式の結果が表示されます。ちょっとした実行テストをする際に利用出来ます。
インタラクティブは、exit() 関数を呼び出す事で終了出来ます。

```
C:\User\PythonMan\Desktop\run_test>py
Python 3.11.1 (tags/v3.11.1:a7a450f, Dec  6 2022, 19:58:39) [MSC v.1934 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> 1 + 2
3
```

# おわりに

以上、Python の実行方法のまとめでした。
次回からは、基本的な文法の解説を開始します。