🐵

WSL2を用いた分析環境構築

2021/07/08に公開

WSL2のインストール方法

分析環境はAnacondaをインストールしておしまいの私にとって、最新の技術であるWSL2を使って分析環境を構築するのも勉強だと思い試してみました。
すでに様々な方たちがまとめられていると思いますが、備忘録として記載します。

インストール条件

  • Windows 10 version 2004
  • Windows 10 version 1903 and 1909

1."Windows Subsystem for Linux"の有効化

管理者権限でPowersellを開いて以下のコマンドを実行。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

2."Virtual Machine Platform"の有効化

管理者権限でpowershellを開いて以下のコマンドを実行。PCを再起動するかどうか聞かれるのでYを入力して実行。Yを入力するとPCが再起動されるのでしばらく待つ。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all

3.WSL2用Linuxカーネルのインストール

下記ページからLinux カーネル更新プログラム パッケージをダウンロードする。
手順 4 - Linux カーネル更新プログラム パッケージをダウンロードする

4.デフォルトをWSL2に設定

wsl --set-default-version 2

切り替わったかどうかは以下のコマンドで確認できます。

wsl -l -v

5.Linuxディストリビューションをインストール

Windows Storeからお好きなディストリビューションをインストール。

自分はUbuntu 20.04 LTSにしました。
Ubuntu 20.04 LTS

インストールが完了したら早速起動。
Windows Store、スタートメニューどちらからでも起動できます。

初回起動時にまずはユーザ名とパスワードの設定。

無事に完了しました。

Linux起動時のディレクトリはエクスプローラを開いて\\wsl$を入力すると、WSLの各ディストリビューションのファイルシステムにアクセスができる。

カレントディレクトリをExplorerで開きたくなったら以下のコマンドを入力すると、カレントディレクトリのパスでExplorerが立ち上がります。

explorer.exe .

WSLの停止もコマンドで一発。

wsl --shutdown

WSL2のメモリ使用上限の設定
デフォルト設定だとWSL2はメモリ使用の上限がないそうです。
果てしなく使われるとローカルPCのメモリが枯渇するので設定を行います。

まずは.wslconfigを作成。

touch .wslconfig

作成した.wslconfigに以下を記述します。

[wsl2]
memory=2GB

2GBもあれば充分だろうということで、いったんこの値に設定しました。
保存したら内容を反映させるためにwsl --shutdownで終了し再起動してください。

Windows Terminalのインストール

色々と便利なのでWindows Terminalをインストールしておく。

Python開発環境構築

Ubuntuをスタートメニューから起動。
Windows Terminalから起動もできます。

UbuntuにはPyhton3がはじめからインストールされています。

pipのインストール

いきなりpipをインストールするとエラーが・・・。
念のためaptをアップデートをすると無事にインストールできました。

sudo apt update
sudo apt upgrade
sudo apt install python3-pip

venvを用いたライブラリのインストール

次はvenvの仮想環境上にライブラリをインストールします。

venvをインストール。

sudo apt-get install python3-venv

testディレクトリの作成

mkdir test
cd test

新しい環境の作成。
今回もenvという環境名で作成しました。

python3 -m venv [環境名]

Activate

source [環境名]/bin/activate

バージョンの確認

python -V

Deactivate

deactivate

M1 Macで苦労していたライブラリのインストールが簡単にできた・・・。

Discussion