Windows11 に Python のインストール（ほんとうに初心者用？）

# はじめに

　少し前にプログラムの勉強をしたいと持ちかけられたので、その時の手順をまとめたものを残しておきます。Windows 11 での **Python** の学習環境の構築手順になります。
 相談を持ちかけられたのは、ビジュアルプログラミング言語の **Scratch** を使った経験があり、パソコンの基本的な操作ができる方でした。

（ほんとうの）初心者を対象に **Docker** などを使った導入はハードルが高く、プログラムの学習に入るまでに疲れてしますと思います。また、ある程度のプログラミングの経験がある方なあら **WSL 2** も視野に入ると思いますが、メモリが最低限 **16 GB** ないと実用に耐え難いと思います。

ここでは、

- PowerShell 7
- Visual Studio Code(VS Code)
- Python 3.11

の環境構築を行います。また、`PowerShell` を使用したコマンドの入力もするので多少難しいかもしれませんが、今後プログラミングを行うのに必要になるので、参考にされる方は、ゆっくり確実に実行してください。

まぁ、一人ぐらいは参考になってくれれば幸いです。

:::note warn
補足
新たにスクショを撮るのに新規の環境が準備できなかったので、**Sandbox** 環境の画像になりますが、おそらく問題ないと思います。多少の違いがありますが、気にしなくても問題ないと思います。
:::

## 1. アプリ実行エイリアスを無効に

　Windows の有り難い機能にアプリ実行エイリアスがありますが、Python の場合、**python.exe**、**python3.exe** が見つからなければ、Microsoft Store が開き Python のインストールの手助けをしてくれます。

ここでは、別途 Python をインストールするので、この機能を無効にします。

- 1 スタートメニューを **右クリック** して **設定** を選択（クリック）します。
- 2 左側の **アプリ** を選択します。設定ウィンドウが小さいと表示されないので、表示されないときは、設定ウィンドウを最大化してください。
- 3 アプリの設定画面に切り替わるので、 **アプリの詳細設定** を選択します。
- 4 次に **アプリ実行エイリアス** を選択します。
- 5 アプリインストーラー（python.exe）、アプリインストーラー（python3.exe）の設定を **オフ** にします。下の方にあるので、表示されないときは画面をスクロールしてください。
- 6 右上の `x` をクリックして、設定ウィンドウを閉じます。
![install_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/270c3c60-dc2e-2244-ebb2-d36eff2c8e53.png)

## 2. アプリケーションのインストール

　ここでは、`winget` コマンドを用いて、**PowerShell 7**、**Python 3.11**、**VS Code** をインストールします。

### 2.1 PowerShell 7

- 1 スタートメニューをクリックします。
- 2 検索欄に `powershell` と入力します。
- 3 **Windows PowerShell** を管理者として実行します。Windows PowerShell の「管理者として実行」が表示されないときは、Windows PowerShell の右側にある `>` をクリックします。
![install_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/03d4f488-df8b-18ee-ea3a-13645b02dff7.png)
このスクショは、**PowerShell 7** が既にインストールされている状態です。
- 4 **Windows PowerShell** が起動します。画面の最後の行に下記のように表示されます。ただし、`xxx` の部分は各自のアカウント（ユーザー）名になります。`>` の後ろにコマンドを入力します。

```pwsh:Windows PowerShell
PS C:\Users\xxx>
```

- 5 下記のコマンドを入力（コピペ）後 `Enter` キーを押します。

```powershell:Windows PowerShell
winget install --id Microsoft.PowerShell
```

しばらくすると

```pwsh:Windows PowerShell
見つかりました PowerShell [Microsoft.PowerShell] バージョン 7.3.4.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://github.com/PowerShell/PowerShell/releases/download/v7.3.4/PowerShell-7.3.4-win-x64.msi
  ██████████████████████████████   100 MB /  100 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました
```

と表示され **PowerShell 7** のインストールが終わります。

:::note info
補足
**winget** の初回利用時にソース契約条件の同意が求められます。`y` と入力後 `Enter` キーを押します。、ソース契約条件に同意します。

```pwsh:Windows PowerShell
'msstore' ソースを使用するには、使用する前に次の契約を表示する必要があります。
Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
ソースが正常に機能するには、現在のマシンの 2 文字の地理的リージョンをバックエンド サービスに送信する必要があります (例: "US")。

すべてのソース契約条件に同意しますか?
[Y] はい  [N] いいえ: 
```
:::

### 2.2 Visual Studio Code

　**VS Code** のインストールを行います。**Windows PowerShell** に下記コマンド入力してインストールします。既にインストール済みの場合は、この操作は必要ありません。

```powershell:Windows PowerShell
winget install -h --id Microsoft.VisualStudioCode
```

### 2.3 Python

　スクショの画面では **Python** 安定版（3.11 系）のインストール時の最新バージョンである `3.11.3` になっています。下記コマンドでインストールするとその時の最新バージョンになります。（2023/06/07 に `3.11.4` がリリースされたようですが、この時点での winget では 3.11.3 のようです。）

- 1 **Windows PowerShell** に下記コマンド入力してインストールします。インストールオプションを変更したいので、`-i` を付けてインストラーを起動します。

```powershell:[Windows PowerShell]
winget install -i --id Python.Python.3.11
```

- 2 インストラーの下部にある `Add python.exe to PATH` のチェックを外します。
![install_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/89b8628e-f7d8-9eee-0825-a57081aa8ea0.png)
- 3 `Install Now` をクリックして、インストールを続行します。
- 4 インストールが正常に終了すると、**Setup was successful** と表示されます。`Close` をクリックして、インストラーのウィンドウを閉じます。
![install_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/a9be523d-2eeb-024d-3b63-a317ad39e6c5.png)
トラブル防止のため、ここで Windows を再起動します。

## 3. Python の設定

　手順が少し複雑になるので悩んだのですが、**VS Code** を利用して **Python** を学習をするなら、トラブルが少ないかなと思い **仮想環境** を採用しました。ここを乗り越えればなんとかなると思います。

- 1 `Python` の作業フォルダを作成します。C ドライブに `Codes` フォルダを作り、その中に `Python` フォルダを作ります(`C:\Codes\Python`)。
![python_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/376024c0-82cd-40b1-097e-123fa2556bb6.png)

:::note warn
補足
基本的に、スペースや日本語（マルチバイト文字など）がフォルダ（ディレクトリ）に含まれるとトラブルが生じる場合があるので、こだわりが無ければ上記の場所に作成してください。ここでは、`C:\Codes\Python` を前提に進めていきます。
:::

- 2 エクスプロラーで **C:\Codes\Python** を開きます。
- 3 エクスプロラーの **アドレスバー** に `pwsh` と入力後 `enter` を押して、**PowerShell 7** を開きます。
`PS C:\Codes\Python>` はプロンプトと呼ばれ、ここでは、現在のディレクトリ（フォルダ）の場所を表しています。
![python_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/2c1adec8-7369-ed13-fcf5-1facc54bafb6.png)
- 4 **PoweShell** のスクリプトが実行できるように設定を変更します。
- 5 `Get-ExecutionPolicy -List` と入力して現在の結果を確認します。

```pwsh:Get-ExecutionPolicy -List の結果
PS C:\Codes\Python> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned
```

- 6 **CurrentUser** もしくは、 **LocalMachine** に `RemoteSigned` の表示がなければ、次のコマンドで設定を変更します。

```powershell:PowerShell 7
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
Get-ExecutionPolicy -List
```

```pwsh:Get-ExecutionPolicy -List の結果
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    RemoteSigned
 LocalMachine    RemoteSigned
```

**CurrentUser** が `RemoteSigned` に変更されました。ここでは、`Set-ExecutionPolicy` コマンドで設定を変更しましたが、**LocalMachine** が `RemoteSigned` になっているので、実際はコマンドを実行する必要はありませんでした。

- 7 `py --version` と入力してして、Python のバージョンを確認します。

```pwsh:py --version の結果
PS C:\Codes\Python> py --version
Python 3.11.3
```

- 8 `py -0p` と入力してして、Python の **PATH** を確認します。

```pwsh:py -0p の結果
PS C:\Codes\Python> py -0p
 -V:3.11 *        C:\Users\WDAGUtilityAccount\AppData\Local\Programs\Python\Python311\python.exe
```

:::note warn
補足
`WDAGUtilityAccount` はアカウント名であり各自の環境で異なります。
:::

- 9 `py -m venv .venv` と入力して、**仮想環境** を作成します。
- 10 `.\.venv\Scripts\Activate.ps1` と入力して（文字を入力して tab キーを押すとパスやファイル名が補完されます。2,3文字ほど入力して tab キーを押すと効率的です）、**仮想環境** に入ります。プロンプトの先頭が **(.venv)** になっていることを確認します。

```pwsh:.\.venv\Scripts\Activate.ps1 の結果
PS C:\Codes\Python> .\.venv\Scripts\Activate.ps1
(.venv) PS C:\Codes\Python> py -0p
```

- 11 `py -0p` と入力してして、再度 Python の **PATH** を確認します。`*` のある `python.exe` を実行します。仮想環境内では、`C:\Codes\Python\.venv\Scripts\python.exe` になります。

```pwsh:py -0p の結果
PS C:\Codes\Python> .\.venv\Scripts\Activate.ps1
(.venv) PS C:\Codes\Python> py -0p
  *               C:\Codes\Python\.venv\Scripts\python.exe
 -V:3.11          C:\Users\WDAGUtilityAccount\AppData\Local\Programs\Python\Python311\python.exe
```

![python_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/2f2059e7-e3c2-e664-666e-9125deff4be8.png)
ここからは、**仮想環境(.venv)** で作業します。

- 12 仮想環境の整備をします。モジュール・ライブラリのインストールします。**PowerShell 7** に下記コマンドを入力します。

```powershell:PowerShell 7
# 更新のあるライブラリのチェック
pip list --outdated
# pip のアップデート
python.exe -m pip install --upgrade pip
# setuptools のアップデート
pip install --upgrade setuptools
# Jupyter や グラフ描画ライブラリなどのインストール
pip install ipykernel numpy matplotlib ipympl pandas
# インストールされたライブラリの確認（依存関係のライブラリもインストールされます）
pip list
```

:::note info
補足
`#` のある行は、次の行で実行するコマンドの説明です。追加で必要なライブラリがあれば、`pip install` でインストールします。ただし、プロンプトの先頭が **(.venv)** になっているのを確認します。**(.venv)** の表示がなければ、`cd C:\Codes\Python` でフォルダを移動して、`.\.venv\Scripts\Activate.ps1` で仮想環境に入ります。
:::

以上で Python の最低限の準備が整いました。引き続き **VS Code** の設定を行います。**PowerShell 7** のウィンドウは閉じずに残しておいてください。

## 4. VS Code の設定

### 4.1 VS Code の起動

- 1 **PowrShell 7** に `code .` と入力して、**VS Code** を起動します。

:::note info
補足
`code .` を入力するときに、プロンプトの表示が`(.venv) PS C:\Codes\Python>` になっているのを確認します。`code .` は、現在のフォルダを **VS Code** で開く意味になります。
- **(.venv)** で仮想環境であることを確認
- **PS C:\Codes\Python** で開くフォルダの場所を確認
:::

- 2 `Yes, I trust the authors` をクリックして、制限モードを無効にします。
![vscode_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/3abb6afa-5cf3-a7f1-b987-ce17d667a043.png)

:::note warn
補足
セキュリティ対策のため、このフォルダ内のファイルが信頼できるか確認するダイアログが表示されます。`No, I don't trust the authors` を選択すると、制限モードとなり拡張機能などが動作しなくなります。他人からもらったファイルなどを開くときは注意してください。
:::

- 3 VS Code の外観の設定を選択して、`Mark done` をクリックして初期設定を終了します。あとから、設定変更できるので気にせず終了してください。また、`Mark done` が表示されていないときは、画面の真ん中あたりをドラッグしてスクロールすると出てくると思います。
![vscode_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/fcc88153-cf31-169c-d1ea-e284ea565860.png)
- 4 拡張の機能のインストールします。ここでは、VS Code の日本語化、Python 関連の拡張機能をインストールします。依存関係のある拡張機能は自動でインストールされます。ここでインストール拡張機能は、**Microsoft** 製なので間違えないようにしてください。

- Japanese Language Pack
- Python
- Jupyter

:::note info
補足
~~イキって~~ 日本語のインターフェースが必要なければ、`Japanese Language Pack` をインストールする必要がありません。~~ちなみに私は、イキってますw。~~ 日本語メニューの場合わかりづらい場合もありました。
:::

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

- 1 現在のアクティビティバー(右側)が `エクスプローラー` になっているので、拡張機能をインストールするため、拡張機能のアイコンをクリックします。
![vscode_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/cdd5ec76-0465-6e51-ad0b-844ff0b7c0f1.png)
- 2 検索欄に `japan` と入力して、`Japanese Language Pack` を選択して `Install` をクリックしてインストールします。
![vscode_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/49e37348-8172-60f4-d850-594d6fac3c28.png)
- 3 同様に、`python`、`jupyter` を検索欄に入力して、`Python`、`Jupyter` をインストールします
- 4 インターフェースに日本語を適用するため、VS Code を再起動します。（VS Code を一旦終了して、スタートメニューから **VS Code** を起動します。）VS Code は前回の状態を覚えてくれているので、`C:\Codes\Python` のフォルダを開いた状態で起動します。

ごくまれに日本語環境にならない場合があります。その場合は、コマンドパレット(Ctrl + Shift + p)を開いて、`Configure Display Language`（config と入力するとリストにでてくるのでそこから選択）を選んで、`日本語(ja)` を選択します。VS Code の再起動が促されるので `Restart` をクリックして再起動します。
![vscode_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/e87a5916-cbef-20fb-144d-bccec2f08018.png)

:::note info
補足
`Ctrl + Shift + p` はショートカットキーを表し、キーボードの、`Ctrl` キーと `Shift` キーと `p` キーを同時に押すことを意味しています。
:::

## 5. 構築した環境の使い方

　ここでは、**Jupyter** 環境と **.py** (スクリプトファイル)の実行する2つの方法を説明します。Jupyter 環境は、簡単なコード実行やグラフ(matplotlib を使用)を描くときに便利です。

### 5.1 Jupyter 環境

- 1 VS Code のエクスプローラー（画面の左側）に現在開いているフォルダ **PYTHON** と表示されていることを確認します。PYTHON になっていないときは、メニューの「ファイル」から「フォルダを開く…」を選択して、`C:\Codes\Python` を開きます。または、メニューの「ファイル」から「最近使用した項目を開く」から `C:\Codes\Python` を選択します。

- 2 コマンドパレット(Ctrl + Shift + p)を開いて、`Jupyter` と入力して，`Create: 新しい Jupyter Notebook` を選択します．
![vscode_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/a0e3c36d-4bfa-46cb-d087-426dacd28f60.png)
-3 `Untitled-1.ipynb` のファイルが作成されます。
![vscode_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/1a162de9-800a-487c-50bc-8dc9f6ee8152.png)
ファイル名の横の白い◯は、ファイルの変更状態を表しています。

- 4 ここで、ファイル名を付けて保存します。ファイルの保存はシュートカットキーの `Ctrl + s` で行います。基本的には、Windows のファイルの保存する
シュートカットキーは、**Ctrl + s** になっているので、メニューバーから保存するのではなく、**Ctrl + s** で保存する癖付けることをおすすめします。「名前を付けて保存」のダイアログが表示されるので、ファイル名に `test` と入力して、「保存」をクリックします。ファイル名が変更されているのを確認します。これ以降`Ctrl + s` で保存するとファイル名 `test.ipynb` で上書き保存されます。
![vscode_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/09f9b7d6-5dab-09dc-f607-eefd35ca663b.png)

:::note info
補足
ここでは、ファイル名を **test** にしていますが、どのような名前でも構いません。ただし、プログラムのファイル名に、空白や日本語（マルチバイト文字）が含まれると問題が起こることがあります。またプログラム言語によっては、数字で始まるファイル名も問題になることがあるので、避けることをおすすめします。
:::

- 5 画面右上の `カーネルの選択` をクリックすると、Python 環境の選択が表示されるので、仮想環境（`.venv`）を選択します。これで、**Jupyter** は上記で作成した仮想環境の Python を使用します。
![vscode_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/e4e0bb78-93d1-a610-a995-0900bbf641f8.png)
- 6 コードセル（？）に `print("Hello, world")` と入力して、左側の▷をクリックするとセルに入力したコードが実行され下に結果が表示されます。ほぼ、Jupyter と同じだと思うので、詳しくは検索してください。私は、Jupyter サーバーを起動するのが面倒なので、VS Code 上で作業しています。
![vscode_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/b96246c5-a2e5-03e6-dfa3-515ec83cc94f.png)

### 5.2 スクリプトの実行

　ここでも、エクスプローラーが **PYTHON** になっていることを確認します。

- 1 エクスプローラーの「新しいファイル…」をクリックして新規ファイルを作ります。ファイル名は、`test.py` にしています。Python だとわかるように、拡張子 `.py` を必ず付けるようにします。
![vscode_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/9ab9e913-c58f-c930-9f8a-6fbd64ee0272.png)
- 2 `print("Hello, world2")` と入力して、`Ctrl + s` で保存します。右上の▷をクリックすると、画面下部に PowerShell が立ち上がり、自動で仮想環境内に入ってプログラムを実行します。
![vscode_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44016/7a428290-0524-e480-3f99-4d7e129cee73.png)

:::note info
補足
将来的には、プロジェクト単位でファイルを管理するようになると思いますが、今は気にせず、フォルダ **PYTHON** に適当にファイルを作って実行するのがいいのではないかと思います。
:::

## さいごに

　私は、読んでいませんが、[独学プログラマー Python言語の基本から仕事のやり方まで](https://www.amazon.co.jp/dp/4822292274/) を片手にプログラミングの勉強するように伝えました。また、現代人の方は、写経はあまりしない（？）ようですが、面倒がらずにコードを入力して結果を確認して進めるように言いました。