メタラーまとんがハイソにやらかすようです

東大理系修士卒JTBCエンジニアのハイソサイエティ(上流階級)な日常

Windows10HomeにWSL2(Ubuntu20.04)とVSCodeでPython開発環境を構築した

ども!まとんです。

先日、プライベートでPCを新調しました。

highso.hatenablog.com

仕事用ではないので、「ブログ執筆ができる程度のスペックがあればいいや」と思って、軽さと持ち運び性を重視してSurfaceGo2を買ったのですが、

やっぱりPythonの開発環境くらいは構築しておかないと日常生活に支障をきたすので、構築しました。

TL; DR

今回のポイントは以下です。

  • Windows 10 Home Editionである。(個人用SurfaceではProfessional Editionを変えない。ただ、結論からいって、Home Editionでも特に問題なかった。
  • WSL2 (Windows Subsystem for Linux)を導入する
  • VSCodeでWSL2にインストールされたPython環境(pipでライブラリ追加)で開発できるようにする

f:id:highso:20210110231819p:plain

過去に自分が書いた記事

highso.hatenablog.com

2019年3月当時は、WSL1で、Ubuntu18.04を入れていました。

highso.hatenablog.com

WSLにpyenvとpipenvを使ってPython仮想環境を切り分ける方法の記事を書いていました。

ただ、今回はそこまでやる元気がなかったので、pyenvとpipenvは導入していません。

今回使ったもの

手順

WSLをインストール

Microsoft Storeで「Windows Subsystem」と検索します。

様々なLinuxディストリビューションがでてきますが、今回はUbuntuの最新バージョンであるUbuntu 20.04 LTSをインストールしました。

f:id:highso:20210110221228p:plain

WSLの初期設定

Windowsメニューから、インストールされたUbuntuを開きます。

すると、ここでいきなりエラーを吐いて躓きました。

 Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x8007019e
The Windows Subsystem for Linux optional component is not enabled. Please enable it and try again.
See https://aka.ms/wslinstall for details.
Press any key to continue...

 エラーコードの「error: 0x8007019e」でググると、以下のサイトがヒットしました。

Windows 10 WSL を有効にする方法 | SEECK.JP サポート

このサイトによると「コントロールパネル→プログラム→Windows の機能の有効化または無効化→Windows Subsystem for Linuxにチェックを入れる」とよいそうなのですが、Windows Subsystem for Linux」のチェック欄がありませんでした。

結局、以下のサイトを参考にしました。

WSL 2(Windows Subsystem for Linux 2)の違いとインストール方法 | パソコン工房 NEXMAG

「コントロールパネル→プログラム→Windows の機能の有効化または無効化」から、LinuxWindowsサブシステム」と「仮想マシン プラットフォーム」の二つにチェックを入れました。

再起動を促されるので再起動して、Ubuntuを立ち上げると、無事にWSLのUbuntuが立ち上がりました。

(もしかしたら、上記のチェックを入れなくとも、再起動するだけでよかったのかもしれません)

Ubuntuのdefault UNIX userを作成

Ubuntuを立ち上げると、最初にdefault UNIX userを作ることになります。

好きなユーザー名とパスワードを設定します。

この点、前回にUbuntu18.04を導入した際には、Windowのユーザー名とパスワードが自動的に引き継がれてしまって不便だったのですが、改善されたようです。

(前回、Windowsのユーザー名を本名にしていた僕は、ブログにスクショを載せる際に本名部分をいちいち消すのが面倒だったのでUbuntuのユーザー名を変更していた経緯があります。)

f:id:highso:20210110221211p:plain

今回はユーザー名「maton」で作成しました。

Ubuntuのアップデート

とりあえずアップデートしておきます。

$ sudo apt update

$ sudo apt upgrade

パスワードは先ほど作成したdefault UNIX userのパスワードです。

数分間かかります。

これでWSL1でのUbuntuのセットアップは完了です。

WSL2の設定、カーネルのアップデート

インストールしたUbuntuを、WSL1ではなく、WSL2で開く設定をします。

Windows Powershellを開き、以下実行すると、Ubuntu20.04のversionが1となっており、WSL1の設定になっていることが分かります。

PS> wsl -l -v

次に、Ubuntu20.04をWSL2で開くよう、以下のコマンドを実行します。

PS> wsl --set-version Ubuntu-20.04 2

(setの前のハイフンは2個です)

すると、カーネルコンポーネントの更新が必要です」と案内が出ました。

f:id:highso:20210110222540p:plain

案内にある「https://aka.ms/wsl2kernel」を開き、「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」をダウンロードしてダブルクリックで実行して、アップデートを行います。

再度以下を実行すると、変換処理が始まりました。

PS> wsl --set-version Ubuntu-20.04 2

変換には数分かかりました。

変換が終わったら、以下のコマンドでversionが2になったことを確認します。

PS> wsl -l -v

これで、UbuntuをWSL2で開く設定が完了しました。

UbuntuにはPython3.8が最初から入っていた

Ubuntuを開き、python3を実行すると、python3.8.5が最初から入っていました。

pythonを自分で導入する必要が無いようです。これはラクチンですね!

VSCodeのインストール

令和のプログラマーは、みんな口を揃えたように統合開発環境VSCodeが良い」と言いますね。

僕は流行りものが好きな性格なので、VSCodeをインストールしていきます。

公式サイトからWindowsのStableをダウンロードして、インストールします。

Visual Studio Code - Code Editing. Redefined

バージョンは1.52.1でした。

VSCodeのExtensionをインストール

VSCodeを開き、左バーのExtensionから、以下を検索してインストールします。

WSLをVSCodeから開く

VSCodeの左下の緑色ボタンを押して、「Remote-WSL: New Window」を選択します。

f:id:highso:20210110224056p:plain

すると、別ウィンドウのVSCodeが立ち上がります。左下に「WSL: Ubuntu-20.04」と表示されていればOKです。

WSLのPythonHello world

WSLのVSCodeで、左バーのExplorerから、Open Folderで「/user/<Ubuntuのユーザー名>」を開きます。

てきとうにPython/test」ディレクトリを作り、「test,py」を作ります。

以下だけ入力して上書き保存しておきます。

print('Hello world')

なお、先ほどインストールしたPythonのExtensionは、WSLのVSCodeには引き継がれないようなので、インストールし直しました。

test.pyを実行するために、上バーから「Terminal→New Terminal」を選びます。

右下に表示されたターミナルで、以下を入力。

$ cd Python

$ cd test

$ python3 test.py

Hello world」と表示されれば成功です!

f:id:highso:20210110224720p:plain

pipのインストールと、ライブラリの追加

WSLのUbuntuにはPython3.8が最初から入っていて親切だなぁと思っていましたが、pipは入っていませんでした。

VSCodeの右下のターミナルを使って、pipをインストールします。

$ sudo apt install python3-pip

てきとうにライブラリをインストールします。わりと必要なものは一通り入っているようなので、今回はline-bot-sdkを入れてみます。

$ pip3 line-bot-sdk

VSCodeのtest.pyを以下のように変更して実行してみます。

from linebot import (
LineBotApi, WebhookHandler
)
print('Hello world')

エラーが出なければ、VSCode経由で、pipでline-bot-sdkを新しくインストールしたWSL2(Ubuntu)で、開発できる環境が整った」ことになります!

感想

少しひっかかったのは、

(1)WSLを実行するためにコントロールパネルで2か所にチェックを入れて再起動する必要があるところ

(2)WSL2に変換するためにカーネルのアップデートが必要なところ(ダウンロードしてインストールするだけ)

です。

それ以外は、全体的にUbuntu20.04が優秀だったので(特に最初からPythonが入っているところ)、すんなりいけました。

 

是非参考にしてください!

以上、メタラーまとんでした。

ではでは。

過去に作ったエンジニア作品

highso.hatenablog.com

highso.hatenablog.com

highso.hatenablog.com

highso.hatenablog.com

highso.hatenablog.com