Python開発仮想環境構築備忘録(Windows+Docker+VSCode+Hyper-V+Python3)

自分用備忘録</br>
WindowsでDockerを使い、VSCode上でPythonを実行できる仮想環境を作る。</br>
※操作は基本管理者権限で実行する想定。

## Hyper-V有効化
「コントロールパネル」-「プログラムと機能」-「Windowsの機能の有効化または無効化」からHyper-Vを有効化する。
![Hyper-V.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/17b39a25-c096-7199-415d-86bc71568cbd.png)
## Dockerインストール
Docker for windowsを公式サイトからダウンロード、インストールする。</br>
https://hub.docker.com/editions/community/docker-ce-desktop-windows/</br>
![docker.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/175cb150-64c9-fc75-d13b-9767fed9ba4c.png)
インストール時にWSL2をインストールするか聞かれるが今回はHyper-Vを使うのでチェックを外す。</br>
![WSL拒否.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/8d2f57c7-ad70-a980-6609-223af13b17c2.png)
Hyper-Vを使う(Use Hyper-V)</br>
![Hyper-V使うよ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/c5e7b983-cd70-1528-ae71-9e8d670ed866.png)
## VSCodeインストール
VSCodeをインストール、日本語化しておく。(割愛)</br>

## Docker設定
Docker右上の歯車マークから設定画面に入る。</br>
[General]：PC起動時にDockerが立ち上がらないようにしておく。</br>
![docker設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/bbedbe19-d57e-66e9-3158-4392101c1d8d.png)
[Resources]-[ADVANCED]：デフォルトそのまま。</br>
![dockerリソースデフォルト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/0f36338f-8aca-c75e-a0b2-921d469a37b5.png)

メモリーが足りずDockerが起動できないときはMemoryを最小の1GBに設定する。</br>
※そもそもDockerが起動に成功しないと設定を変更できないので、以下の設定ファイルから直接変更する。

```
C:\「ユーザー」\AppData\Roaming\Docker\settings.json
"memoryMiB": 2048→1024
```
</br>

## PythonイメージPull
コマンドプロンプトでDockerHubからPythonイメージをダウンロード(pull)する。</br>
https://hub.docker.com/_/python</br>
```
docker pull python:latest
```
Docker上</br>
![images.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/5949c883-5466-0a80-bfeb-358d9c174113.png)
## コンテナ作成
コンテナを作成(+起動)する。
```
//docker run -it --name 「コンテナ名」 「イメージ名」 /bin/bash
docker run -it --name pythonTest python /bin/bash
```
作成するとコンテナの中に入る。(VSCodeで接続するのでexitで抜けておく)</br>

Docker上</br>
![コンテナ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/7750443f-e30d-d328-0742-9d58325256ba.png)

# VSCodeでコンテナへリモート接続
VSCodeに拡張機能のRemote-Containersをインストールする。 </br>
![VSCoderemote.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/0ea2ee5f-f9e3-f3b1-4730-14844fa85866.png)
左側のバーにモニターのアイコンが表示され、先ほど作ったコンテナがあるので接続(Attatch to Container)する。</br>
![VSCodepython接続.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/46da3ef3-0e46-c436-7502-99fe335038e3.png)

接続できると左下に接続先のコンテナ名が表示される。(開かれたVSCodeはリモート先のVSCodeとなる)</br>
![VSCode接続成功.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/7322c436-f73d-9f10-f839-25ed07ab16d0.png)

英語になっている時はコマンドパレット(Ctrl+Shift+P)から「Configre Display Language」を選択し言語を日本語に変更する。</br>
![VSCode日本語化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/5d5828cf-6df8-9b9d-bf44-85eff842f398.png)

リモート先のVSCodeに拡張機能のPythonをインストールする。</br>
![VSCodePython.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/f238f3a6-2fba-a882-eed3-a91a16c57f2b.png)

ターミナルを表示するとVSCode上でコマンド入力できる。</br>
![VSCodeターミナル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/40037ea8-5463-bba6-a2f2-30a9115f3c23.png)

## 仮想環境設定
viコマンドを使えるようVimをインストールする。
```
apt-get update
apt-get install vim
```
空のpyファイルを作成する。
```
vi test.py
```
:wqで保存終了したら、Ctrl+Oで作ったpyファイルを開く</br>
![VSCodeファイル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/024f142b-99b5-dae4-7ee1-07785ae0d24a.png)


適当にコードを書いて保存し、F5でPythonを実行する。</br>
![python実行.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/55a3ab09-6f6b-ea8e-59d8-b4e353787e9b.png)

ターミナル画面に実行結果が表示される。</br>
![python実行joutai .png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873792/c1ee5224-d486-33e0-7fcb-40073a96694a.png)


Python開発環境出来上がり