Windows11でWSL2でUbunutuを入れ、pyenvで仮想環境を構築する

# はじめに
DjangoをWSL2のUbunutuにインストールしたPythonのpyenvを利用した仮想環境に構築し、Djangoインストールするまで
### 構築環境の目標
Windows 11 home　version 23H2
WSL2(Ubunutu) デフォルトでインストールされるバージョン
VSCODE
Python 3.12.3
Django 5.1.1

### 環境構築の下準備
Windows Updateをしておく。
![スクリーンショット 2024-09-17 175553.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774501/9fd262e6-c247-827c-95de-069c9cf0b39a.png)

Windows Terminalを最新の状態に更新する。　開くボタンのみになればOK
![スクリーンショット 2024-09-17 180942.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774501/332faa94-a8be-ef56-996f-227d7022de33.png)

Windowsツールをクリック
![スクリーンショット 2024-09-17 182341.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774501/4e4b9ee5-4b87-0a3a-418d-cb87ead1c333.png)

Windows PowerShellを右クリックして管理者として実行

![スクリーンショット 2024-09-17 182958.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774501/fa66a25f-0041-b11e-9233-d068e9585b25.png)

Windows power shellに下のコマンドをコピペする。　ctrl + vで貼り付けられます。
```powershell:powershell
wsl --install

```

詳しくは下のページから見られます。

https://learn.microsoft.com/ja-jp/windows/wsl/install

![スクリーンショット 2024-09-17 211439.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774501/722e4427-1c15-1d1b-804a-72b8c68e859e.png)


biosで仮想化が有効されてない場合ダメだったりするのでお持ちのPCのbios設定をしておいてください。

![スクリーンショット 2024-09-17 215030.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774501/d1e02025-f276-e161-986f-1ac38da75ce6.png)

UNIX usernameに任意の名前を入れて
Passwordも作ってください。
打っても画面に表示されませんがしっかり認識されていますので問題ありません。

```bash:Ubunutu
sudo apt update
sudo apt upgrade
```

bashコマンドといいますがWSL2のUbunutuはCUI(コマンド　ユーザー　インターフェース)
でosのアップデートや周辺ソフトがアップデートされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774501/6b9a2be2-d795-8eb0-a8cc-69826bee23d2.png)

上記コマンドを実行後はこのようになります。

バージョン管理ツールのGitをインストールします。Gitは後程利用します。

```bash:Ubunutu
sudo apt-get install git-all

```

https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

pyenvをインストールするために必要な依存パッケージをインストールします。
```bash:bash
sudo apt install -y build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev \
python-openssl git
```


Gitを使ってpyenvをインストールします。

https://github.com/pyenv/pyenv

```bash:Ubunutu
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

```
上記のコマンドでUbuntuの/root/.pyenvにpyenvをインストール

シェルの設定

```bash:bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
```
```bash:bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.profile
```

```bash:bash
exec "$SHELL"
```
```bash:bash
# pyenvにインストールできるPython一覧を取得（１ページごと）
pyenv install -l | less
```

こちらのPythonJapanが紹介している、非公式ダウンロードリンクからsourceタブを開いて、好きなPythonのバージョンをDLしてください。
自分の場合は3.12.3

https://pythonlinks.python.jp/ja/index.html

![スクリーンショット 2024-09-20 173817.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774501/a07d1f35-f839-ba7d-688d-2c0c006e71a6.png)

ダウンロードしたファイルはエクスプローラーからLinuxのUbunutuフォルダのホーム、自分のユーザー名のフォルダに入れておきます。

![スクリーンショット 2024-09-20 174625.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774501/f64065e7-4e02-9eb5-3413-cff9ee0be2dd.png)

```bash:bash
#/home/ユーザ名　以外に配置した場合は、cdコマンドでファイルがある場所へ移動する

#圧縮ファイルの解凍
#Pyhtonのバージョンによってファイル名が変わるので自分のバージョンに書き換えてください。
tar xJf Python-3.12.3.tar.xz

#解凍後のディレクトリに移動
#Pyhtonのバージョンによってファイル名が変わるので自分のバージョンに書き換えてください。
cd Python-3.12.3

#ビルド、インストールを実行
./configure
make
sudo make install
```

Python 3.12.3 のインストール
pyenv を使用して、指定したバージョンのPythonをインストールします。

```bash:bash
pyenv install 3.12.3
```
インストールが完了したら、グローバルで使用するPythonのバージョンを設定します。
```bash:bash
pyenv global 3.12.3
```
インストールが正しく行われたか確認するために、以下のコマンドを実行します。
```bash:bash
python --version
```
Python 3.12.3 と表示されれば成功です。

# 仮想環境の作成
プロジェクトごとに依存関係を管理するために、仮想環境を作成します。ここでは venv を使用します。
```bash:bash
python -m venv myenv
```
仮想環境を有効にします。
```bash:bash
source myenv/bin/activate
```
# Djangoのインストール
仮想環境内で pip を使用してDjangoをインストールします。
```bash:bash
pip install --upgrade pip
pip install Django==5.1.1
```
インストールが完了したら、Djangoのバージョンを確認します。
5.1.1 と表示されれば成功です。

# Djangoプロジェクトの作成
新しいDjangoプロジェクトを作成します。ここでは myproject という名前で作成します。
```bash:bash
django-admin startproject myproject
```
プロジェクトディレクトリに移動します。
```bash:bash
cd myproject
```
開発用サーバーを起動して動作確認を行います。
```bash:bash
python manage.py runserver
```

ブラウザで http://127.0.0.1:8000/ にアクセスし、Djangoのウェルカムページが表示されれば成功です。

# VSCodeの設定
VSCodeを使用して開発を行うために、WSL2と連携させます。

VSCodeのインストール
Windows側にVSCodeがインストールされていない場合は、公式サイトからインストールしてください。

Remote - WSL拡張機能のインストール
VSCodeを開き、拡張機能マーケットプレイスから「Remote - WSL」を検索してインストールします。

WSL環境でVSCodeを起動
WSL2のUbuntuターミナルで以下のコマンドを実行します。
```bash:bash
code .
```
これにより、現在のディレクトリがVSCodeで開かれ、WSL2環境と連携されます。

Python拡張機能のインストール
VSCode内でPython拡張機能をインストールします。これにより、コード補完やデバッグ機能が利用可能になります。
---
参考リンク

https://qiita.com/a-hira/items/c6a9eaa0fbdfa71d1e0c#e-python

https://zenn.dev/tigrebiz/articles/2822fb4de256d8#pyenv%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9Fpython%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

https://github.com/pyenv/pyenv