Windows端末にVS CodeでPython開発環境を用意してみる

本記事では`Python`の開発環境を`Windows`と`VS Code`で構築してみます。

## 今回利用する環境

- Windows 10 21H2
- Python 3.10.4
- VS Code 1.66.2
- Python extension for Visual Studio Code v2022.4.1（VS Code拡張）

## 各種ドキュメント

- [Python](https://www.python.org/)
- [Python 3.10.4 ドキュメント](https://docs.python.org/ja/3.10/index.html)
- [Python チュートリアル](https://docs.python.org/ja/3.10/tutorial/index.html)
- [Windows で Python を使う](https://docs.python.org/ja/3.10/using/windows.html)
- [Python For Beginners](https://www.python.org/about/gettingstarted/)
- [BeginnersGuide](https://wiki.python.org/moin/BeginnersGuide)
- [Python Packaging User Guide](https://packaging.python.org/)
- [Getting Started with Python in VS Code](https://code.visualstudio.com/docs/python/python-tutorial)
- [Python extension for VS Code](https://marketplace.visualstudio.com/items?itemName=ms-python.python)

## Pythonのインストール

`Windows`端末に`Python`をインストールする手段としては`マイクロソフトストア`や`winget`を利用する方法もありますが、今回は[python.org](https://www.python.org/)の完全インストーラーからインストールする方法を利用します。

[4.1. 完全版インストーラ](https://docs.python.org/ja/3/using/windows.html#the-full-installer)

なお公式ドキュメントに`Windows`向けの説明があるのでこちらを参照して`Python`をインストールします。

### インストールするバージョンについて

記事執筆時点では、`Python v3.10.4 64bit`がダウンロードできたためこちらをインストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/3fbad615-5c87-6181-3af2-2ba51a9c1274.png)

なおWindows環境では`v3.9.0`より前は`python.org`でデフォルトでダウンロードされるインストーラーは32bit版だったようですが、`v3.9.0`からは64bit版がデフォルトになったようです。

### ダウンロードしたインストーラーを実行してインストール

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/7f04f709-4549-c65c-93a9-6d318dce0b2b.png)

ダウンロードしたインストーラを実行します。

今回、特にデフォルト設定から変更せずにインストールしますが、`Customze installation`でどんな項目があるか確認してインストールしていきます。

なお、`Python 3.10.4`では環境変数`PATH`に`python.exe`を追加しない設定が、インストーラデフォルトの設定となっており、本手順では`python.exe`を`PATH`に追加しないで`pyランチャー（py.exe）`を利用する方針でインストールします。

#### Install Python 3.10.4(64-bit)

`Customize installation`を選択  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/425550d0-dfe3-fc57-8cae-0bc36d0456d6.png)

#### Optional Features

Windowsだと`マニュアル`や`pip`や`tcl/tk（GUI）`や`IDLE`や`テストスイート`がデフォルトでチェックされていました。

本記事では、`pip`と`py launch`しか使いませんがこのまま`Next`を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/81daedf9-b8a0-8291-cf84-5a3f6f9c33fc.png)

#### Advanced Options

デフォルトでは

- Associate files with Python(Requires the py launcher)
- Create shortcuts for installed applications

pyファイルの関連付けとショートカット作成にチェックが入っている状態となっていました。

このまま`Install`を選択  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/20e1a080-825c-3001-a1a7-7f92f4a7e28a.png)

なお最初の選択画面で、`Add Python 3.10 to PATH`にチェックを入れていない場合でも。
Advanced Optionsで`Add Python to environment variables`にチェックを入れると連動してチェックが入るようです。

#### Setup was successfull

`Close`を選択  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/aee12521-39f5-0700-86f2-eda54fca02da.png)

インストール完了。

下記ページに`Windows`で`Python`を利用する際の諸々が書いてるので目を通しておくと色々と捗ります。

- [3. Windows で Python を使う](https://docs.python.org/ja/3/using/windows.html#using-python-on-windows)

## Pythonランチャとバージョン確認

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

まずはインストールされた`Python`のバージョンを確認します。

今回はインストールオプションで`Add Python 3.10 to PATH`にチェックを入れてないため、`python.exe`に`PATH`が通っていません。

インストール時のオプションで`py launcher`にチェックをつけてインストールしましたが、`py launcher（py.exe）`は`C:\WINDOWS\py.exe`にインストールされます。

このため別途環境変数を追加する事なく、`py`だけで実行できる状態となります。

ここでは`py --version`でインストールされているPythonのバージョンを確認します。

バージョンの確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/6ff7070b-d0a2-abe9-ff53-cc3112ad8efe.png)

py.exeのインストール場所確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/81d9b8c2-d73e-cc79-9a1e-24fac37b06ad.png)

## Pythonを対話モード（REPL）で起動してみる

`py`をオプション指定なしで実行すれば`REPL（Read eval print loop：対話的実行環境）`で`Python`が起動し対話式で逐次処理を実行します。

なお`RFPL`を終了する場合は`exit()` と入力するか `CTRL-Z` -> `Enter` と入力すれば終了できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/9bf0e232-a955-e817-dd53-50ac14c94150.png)

### 【余談】Pythonコマンドがインストールされてない状態でpythonコマンドを実行すると

`Windows 10`で`Python`コマンドを実行するとブラウザが起動して、マイクロソフトストアの`Python`インストール画面が表示されます。

これは、`Windows 10 May 2019 Update（バージョン 1903）`から追加された機能で、この動作については下記にドキュメントがあります。

[python.exe を実行すると Microsoft Store が開くのはなぜですか?](https://docs.microsoft.com/ja-jp/windows/python/faqs#why-does-running-pythonexe-open-the-microsoft-store)

実体としてどのような仕組みで動作しているか確認すると下記のようになっており。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/3f182a4a-d326-f91b-ae11-77eb4e189aa7.png)

この`python.exe`はどこで制御されているかといえば、`アプリと機能`の`アプリ実行エイリアス`で制御されている項目になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/326dc4a1-2d86-5bea-6b52-7f6e7701cfd7.png)

本記事では`Python`はインストールしましたが、`python.exe`に環境変数`PATH`を通していないため、間違えて`python`と実行するたびにマイクロソフトストアが開くのも微妙なためアプリ実行エイリアスはオフにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/3229bec4-43ea-f674-e815-56de016e2945.png)

これで`python`,`python3`実行時にコマンドが見つからないとエラーになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/0c40e701-342c-10b1-acde-7fe96edce879.png)

## VS Codeのインストール

公式のセットアップガイドに従いインストールします。

[Visual Studio Code on Windows](https://code.visualstudio.com/docs/setup/windows)

## VS Code Python拡張機能の設定

本記事では下記ドキュメントの記事を参照して設定してみます。

[Getting Started with Python in VS Code](https://code.visualstudio.com/docs/python/python-tutorial#_prerequisites)

### 拡張機能のインストール

Microsoftが提供しているPython拡張機能をインストール。

この拡張機能は、Python開発を便利にするインテリセンス（Pylance）、lint、デバック、コードナビゲーション、コードフォーマット等々を提供してくれます。

[Python extension for VS Code](https://marketplace.visualstudio.com/items?itemName=ms-python.python)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/f6611100-6154-8e1f-a530-396314cf3423.png)

なお今回インストールする、拡張機能のバージョンでは`v2022.4.1`では下記の拡張機能も一緒にインストールされるようです。


- [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance)
- [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)

## プロジェクトフォルダの作成

[Start VS Code in a project (workspace) folder](https://code.visualstudio.com/docs/python/python-tutorial#_start-vs-code-in-a-project-workspace-folder)

下記のコマンドを実行して`hello`というディレクトリを作成し`VS Code`で開く。

今回はプロジェクトフォルダとしてc:\temp\python\helloディレクトリを作成しました。

```PowerShell
mkdir hello
cd hello
code .
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/ae409c18-ccc6-a05f-8325-5b298ecd6ef6.png)

### インタープリタの選択

`VS Code`起動後、コマンドパレット（`Ctrl+Shift+P`）から`Python: Select Interpreter`からインタープリタを切り替える事ができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/a4d61486-b01a-d9c4-f725-7d96ce9db362.png)

いま時点では、先程インストールした3.10.4 64-bitが表示されている事を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/cf71e8c5-ad4a-7f22-4c78-173edde57ad3.png)

## hello.pyの作成

`ファイル` -> `新規ファイル作成` (`ctrl+N`)からファイル `hello.py`を作成して下記をコーディング。

```Python:hello.py
msg = "Hello World"
print(msg)
```

これは1行目で`msg`に文字列Hello Worldを代入。
2行明でprint関数で変数msgを表示しているプログラムになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/720fb974-905e-1bb5-af1f-41f2922e8eb5.png)

pyファイルを`VS Code`で編集していると、ステータスバーの右下に先程確認したインタープリタが表示されているかと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/fc8cb171-294d-b4c2-29b3-0d5bf23a4052.png)

## hello.pyの実行

[Run Hello World](https://code.visualstudio.com/docs/python/python-tutorial#_run-hello-world)

下記画像赤枠の実行ボタンからプログラムを実行します。

![](image/run.helloworld.py.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/70bcd8c2-7030-2b42-69a8-695e6c9c531e.png)

ターミナルパネルで実行されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/ca9959aa-24f8-f7f4-191c-8a63979324a7.png)

上記のように先程、表示されたインタープリタに`c:\temp\python\hello\hello.py`を引数として渡して実行している事がわかります。

## CUIからhello.pyの実行

`VS Code`上の`RUN`ボタンからプログラムを実行しましたが。

`CUI`から`hello.py`を実行する場合は、`Pythonランチャ(py.exe)`に引数として`hello.py`を渡して実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/e48d3e73-34a7-c6c2-7616-e0f2146177fb.png)

## hello.pyをデバッカ実行

[Configure and run the debugger](https://code.visualstudio.com/docs/python/python-tutorial#_configure-and-run-the-debugger)

ここでは`hello.py`をデバック実行をしてみます。

まずは`hello.py`のソースコード2行目にカーソルを合わせて`F9`。

これで2行目に`break-point（赤丸）`が設定されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/79e1c6fc-c6cd-1748-a3c2-46bf8b051456.png)

`break-point`が設定された状態で`F5`を選択 -> `Python File`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/9f8ed3e4-bfee-6b54-d10d-8d0cd44d317c.png)

デバック実行が起動して、`break-point`を設定した2行目で処理が停止します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/b8874c3f-571a-2f4e-8a44-7933f5dbd3f0.png)

デバック実行をするとデバックツールバーが出てくるので、こちらを利用してデバック処理のステップを進めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/93fba453-6104-3351-c9d6-fd411df77865.png)

- `F5`キーを実行して中断した処理を継続
- `F10`キーを実行してステップ実行
- `F11`キーを実行してステップイン実行
- `Shift+F11`キーを実行したりステップアウト実行
- `Ctrl+Shift+F5`キーを実行してデバッガを再起動
- `Shift+F5`キーを実行して停止

またデバック実行時は、実行時の変数の状態や、ウォッチ式を設定したり諸々のデバック機能が利用できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/5f06dd1c-0028-a046-a3dc-c807527d556d.png)

またデバック時には`デバックコンソール`パネルで変数を操作したり、式を評価したりできます。

```python
msg
msg.capitalize()
msg.split()
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/d345c538-893a-4af7-bfef-55c8ba7c7b67.png)

ちなみに`VS Code`ではlaunch.jsonというファイルを作って、高度なデバック設定をすることができる。

詳細については下記にドキュメントがります。

[vs code - debugging](https://code.visualstudio.com/docs/editor/debugging)。

本記事でも後で触れます。

## 仮想環境の作成とパッケージのインストール

[Install and use packages](https://code.visualstudio.com/docs/python/python-tutorial#_install-and-use-packages)

[PyPI - the Python Package Index](https://pypi.org/)

`Python`では様々なパッケージが公開されており、ある時からPython標準になったパッケージマネージャ`pip`を利用することにより手軽に各種パッケージを利用できます。

パッケージは強力で便利ですが、開発環境に無秩序にパッケージを突っ込んでいくと、当然のごとく開発環境がカオスなことになっていきます。

`Python 3.3`から`venv`という仮想環境機能が標準で追加されており。
用途ごとに、仮想環境を作りそこに個別にパッケージをインストールしていくと手法が使えます。

ここでは`VS Code`上で仮想環境`.venv`を作成してパッケージをインストールしてみます。

### 仮想環境の作成と有効化

[Global, virtual, and conda environments](https://code.visualstudio.com/docs/python/environments#_global-virtual-and-conda-environments)

[仮想環境の作成](https://docs.python.org/ja/3/tutorial/venv.html#creating-virtual-environments)

まずは仮想環境を作成します。
仮想環境は下記コマンド実行して作成します。

```pwsh
py.exe -m venv .venv
```

今回は先程作成した`hello`というフォルダの配下に`.venv`という名前で仮想環境を作成しています。

仮想環境は作成しただけでは有効にならず、有効化する必要があります。
有効化を行うには`Windows`の場合は`bat`用と`PowerShell`用の下記が用意されています。
それぞれお使いのシェル環境で使い分けて下さい。

- bat:`<<env_dir>>\Scripts\activate.bat`
- ps1:`<<env_dir>>\Scripts\Activate.ps1`

この`activte`スクリプトを実行すると仮想環境が有効になります。

また有効になった仮想環境を抜ける場合は環境によって下記を実行して下さい。

- bat:`<<env_dir>>\Scripts\deactivate.bat`
- ps1:`deactive`

`oh-my-posh`で表示をカスタマイズしているため分かりづらいかもしれませが。
下記の画像で、`(.venv)`となっていたり  `.venv 3.10.4`と仮想環境が有効になっているのが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/eb756aa6-f44a-71e2-7069-e4ef0731f9d8.png)

### Activate.ps1はあるけど、Deactivate.ps1はない？

`ps1`の方は、`bat`と違い`Deactivate.ps1`が用意されていない？　と疑問に思いましたが、`Activate.ps1`の中で`deactivate`という`function`を定義しており。
仮想環境有効化時に`deactivate`を読み込んでいるので、これを実行して仮想環境を無効化しています。

仮想環境が有効な状態では`deactivate`がfunctionで定義されているのが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/b04401ff-93db-09aa-9611-85e6a20858e2.png)

### VS Code環境で仮想環境をインタープリタとして選択

仮想環境を作成できたので、ここでは作成した仮想環境を`VS Code`で利用する方法を説明します。

コマンドパレット（`Ctrl+Shift+P`）から`Python: Select Interpreter`を選択して

先程作成した`.venv`を選択します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/6005ee79-737e-de78-b357-04775fe0596f.png)

ステータスバーを確認にすると今回作成した`.venv`が指定されている事を確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/0b69c7b4-fc44-58f4-eb74-d7f72b89119b.png)


この状態で、`統合コンソール（CTRL+SHIFT+@）`を新しく起動すると起動時に仮想環境を`Active`にして起動してきます。


なお`Python拡張機能がインストールされたVS Code`を起動している状態で、ワークスペースに仮想環境が作成されると下記のようなポップアップがでてきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/7eddcd91-8e5f-71dc-433e-08634025d6e3.png)

ここで`yes`を選択すると、上記と同様に`Python interpreter`に作成した仮想環境が設定されます。

### パッケージのインストール

今回は`.venv`という仮想環境に`matplotlib`というライブラリをインストールして利用してみます。

[Install and use packages](https://code.visualstudio.com/docs/python/python-tutorial#_install-and-use-packages)

まずは`matplotlib`を利用するプログラムを作成します。

下記プログラムを、`standardplot.py`という名前で作成します。

```python:standardplot.py
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 20, 100)  # Create a list of evenly-spaced numbers over the range
plt.plot(x, np.sin(x))       # Plot the sine of each x point
plt.show()                   # Display the plot
```

なおまだライブラリをインストールしていないため、この時点で実行するとエラーになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/bf4b0cb1-8944-d9cd-0832-7700d8f6d88d.png)

`.venv`の仮想環境を有効にしている状態で下記コマンドを実行して`.venv`に`matplotlib`をインストールします。

```pwsh
py -m pip install matplotlib
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/597a01cd-41e5-41b0-5ae2-22d992df2e30.png)


インストール完了しました。下記コマンドでインストールされているパッケージを確認します。

```pwsh
py -m pip list
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/dff6f033-56ee-f035-db50-e5f3999a05cb.png)


`matplotlib`と関係するパッケージがインストールされている事が確認できます。

この状態で`standardplot.py`を実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/a4072f24-a8be-39b9-9bd1-71657d26dc60.png)

`matplotlib`ライブラリを利用して図が表示されました。

図が表示1  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/7a964d07-bb23-a675-fb8e-9aa3a465b9ff.png)

## VS Codeでlaunch.jsonを利用したデバックのカスタマイズ

`launch.json`を利用してデバック実行時の引数を指定したデバック実行をしてみます。

下記のプログラムを`argv.py`というファイル名で作成する。
また6行目の`print(sys.argv)`に`break-point`を設定。

```python
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys

print(sys.argv)
```

`argv.py`は渡された引数を表示する簡易なプログラムになります。
この`argv.py`に対してデバック実行時に引数を渡して実行するように`launch.json`を設定します。

`launchljsonファイルを作成します`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/d2495580-7ae7-40f3-add2-3a4b68314515.png)

`Python`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/a3a46d65-58a3-3a11-29f5-52f8550fc018.png)

`Python File`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/6a0ce778-89de-fff7-4c25-d66499373ffd.png)

テンプレートから`launch.json`が作成されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/429a624c-5f84-3b27-0f3d-c3cd4cc06767.png)

`VS Code`ではこの`launch.json`を設定してデバックをカスタマイズします。

今回は下記のように`argv.pyを実行`を追記してみました。

```json:launch.json
{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        },
        {
            "name": "argv.pyを実行",
            "type": "python",
            "request": "launch",
            "program": "${workspaceRoot}/argv.py",
            "console": "integratedTerminal",
            "args": [
                "Hello",
                "world"
            ]
        }
    ]
}
```

追加箇所としては、`argv.pyを実行`　を追加しました

`${workspaceRoot}`は`launch.json`で利用できる変数になり、これは`VS Code`のワークスペースディレクトになります。

`launch.json`で利用できる変数については下記にドキュメントがあります。

[Variable substitution](https://code.visualstudio.com/docs/editor/debugging#_variable-substitution)

`launch.json`を設定するとデバック実行の画面に`argv.pyを実行`が追加されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/6f8c40aa-4b7d-3207-d351-0f7ffd2ec7c0.png)

こちらを選択して実行ボタンを押すとデバック実行が起動して、先程`breakpoint`を設定した6行目で停止します。

この状態で、デバックコンソールで`sys.argv`を確認すると下記のように`launch.json`で指定した`Hello`と`World`が渡して実行されている事が確認できます。（0番目は実行されているスクリプトが入る）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/ad932d00-75db-a0f6-1e0f-3f6d10fe804a.png)

## タスク設定

`VS Code`には一連の処理をタスクとして設定し、実行する`タスクランナー`が用意されています。
このタスクは`tasks.json`ファイルでタスクを設定する事ができます。

[Integrate with External Tools via Tasks](https://code.visualstudio.com/docs/editor/tasks)

### echoを実行するタスク

コマンドパレット（`Ctrl+Shift+P`）から`Tasks: Configure Task`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/83820e27-3baf-4fb9-8903-bd317cea3ab9.png)

`テンプレートからtasks.jsonを生成`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/b0830871-4fdb-c62c-9519-88b5f3ca5419.png)

`Ohters`を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/4b7ce4d5-612f-40ff-06fe-03f84bf82001.png)

テンプレートからtasks.jsonが生成されました。

これはshellで`echo Helo`を実行するタスクになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/c5a8111f-95f1-53d0-b0c2-4f05df26688a.png)

```json:tasks.json
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            "command": "echo Hello"
        }
    ]
}
```

コマンドパレット（`Ctrl+Shift+P`）から`Tasks: Run Task`を選択して`echo`を選択

`Tasks: Run Task`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/0396892e-1175-5e2e-8dae-a4416cadc01d.png)

`echo`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/7c945158-5f16-c2e2-f3be-389ec33cbcb6.png)

`タスクの出力をスキャンせずに続行`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/512ae068-05d7-26ac-4f7c-4692ff9e72d4.png)

`ターミナル`でタスクが実行されているのを確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/1eaf9f32-e657-3f61-65af-1e3dea8831e4.png)

### 設定しているインタープリタでpyファイルを実行するタスク

echoをシェルで実行するタスクを生成しましたが。

次はタスクで`VS Code`に設定しているインタープリタで`py`ファイルを実行する`Tasks.json`を設定してみます。

ここでは`execute standardplot`で先程作成した`standardplot.py`を実行するタスクを追加してみます。

```json:tasks.json
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            "command": "echo Hello"
        },
        {
            "label": "execute standardplot",
            "type": "shell",
            "command": "${command:python.interpreterPath}",
            "args":["${workspaceRoot}\\standardplot.py"]
        }
    ]
}
```

`command`と`args`については、フルパスをベタで書いても動きますが、ここでは`VS Code`で利用できる変数を利用して設定しています。

ここで利用している変数、`${command:python.interpreterPath}`と`${workspaceRoot}`の説明は下記にドキュメントがあります。

[Integrate with External Tools via Tasks](https://code.visualstudio.com/docs/editor/tasks#vscode)

- `${command:python.interpreterPath}`で`VS Code`で選択しているインタープリタのパスを取得。
- ${workspaceRoot}、現在のワークスペースを取得

`Tasks: Run Task`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/d0ee0ab6-6119-57ff-ec94-a6c900ceea8c.png)

`execute standardplot`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/7e54a8fc-f668-2fe6-81f4-c6a9ad7f8298.png)

`タスクの出力をスキャンせずに続行`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/0cbc040f-3562-e023-1ea1-6b414c17c0ce.png)

ターミナルで`standardplot.py`が実行されているのがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/3a14dc84-afd1-792b-c6b0-56e6eba608a2.png)

## まとめ

Pythonは歴史が長い言語だけあり。

- Python2とPython3の話だったり
- 32bitと64bitの話だったり
- 仮想環境の管理の話だったり
- インストーラー、マイクロソフトストア、winget
- Anaconda等の各種ディストリビューションの話だったり

前提として色々と積もる話はありますが、今回は`VS Code`の拡張機能の説明部分をメインにインストールについてまとめて見ました。

[Getting Started with Python in VS Code](https://code.visualstudio.com/docs/python/python-tutorial#_prerequisites)