ども!まとんです。
先日、プライベートでPCを新調しました。
仕事用ではないので、「ブログ執筆ができる程度のスペックがあればいいや」と思って、軽さと持ち運び性を重視してSurfaceGo2を買ったのですが、
やっぱりPythonの開発環境くらいは構築しておかないと日常生活に支障をきたすので、構築しました。
TL; DR
今回のポイントは以下です。
- Windows 10 Home Editionである。(個人用SurfaceではProfessional Editionを変えない。ただ、結論からいって、Home Editionでも特に問題なかった。)
- WSL2 (Windows Subsystem for Linux)を導入する
- VSCodeでWSL2にインストールされたPython環境(pipでライブラリ追加)で開発できるようにする
過去に自分が書いた記事
2019年3月当時は、WSL1で、Ubuntu18.04を入れていました。
WSLにpyenvとpipenvを使ってPython仮想環境を切り分ける方法の記事を書いていました。
ただ、今回はそこまでやる元気がなかったので、pyenvとpipenvは導入していません。
今回使ったもの
手順
WSLをインストール
Microsoft Storeで「Windows Subsystem」と検索します。
様々なLinuxディストリビューションがでてきますが、今回はUbuntuの最新バージョンであるUbuntu 20.04 LTSをインストールしました。
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 の機能の有効化または無効化」から、「Linux用Windowsサブシステム」と「仮想マシン プラットフォーム」の二つにチェックを入れました。
再起動を促されるので再起動して、Ubuntuを立ち上げると、無事にWSLのUbuntuが立ち上がりました。
(もしかしたら、上記のチェックを入れなくとも、再起動するだけでよかったのかもしれません)
Ubuntuのdefault UNIX userを作成
Ubuntuを立ち上げると、最初にdefault UNIX userを作ることになります。
好きなユーザー名とパスワードを設定します。
この点、前回にUbuntu18.04を導入した際には、Windowのユーザー名とパスワードが自動的に引き継がれてしまって不便だったのですが、改善されたようです。
(前回、Windowsのユーザー名を本名にしていた僕は、ブログにスクショを載せる際に本名部分をいちいち消すのが面倒だったので、Ubuntuのユーザー名を変更していた経緯があります。)
今回はユーザー名「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個です)
すると、「カーネルコンポーネントの更新が必要です」と案内が出ました。
案内にある「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から、以下を検索してインストールします。
- Remote - WSL 0.52.0
- Python extension for Visual Studio Code v2020.12.424452561
WSLをVSCodeから開く
VSCodeの左下の緑色ボタンを押して、「Remote-WSL: New Window」を選択します。
すると、別ウィンドウのVSCodeが立ち上がります。左下に「WSL: Ubuntu-20.04」と表示されていればOKです。
WSLのPythonでHello world
WSLのVSCodeで、左バーの「Explorer」から、Open Folderで「/user/<Ubuntuのユーザー名>」を開きます。
てきとうに「Python/test」とディレクトリを作り、「test,py」を作ります。
以下だけ入力して上書き保存しておきます。
なお、先ほどインストールしたPythonのExtensionは、WSLのVSCodeには引き継がれないようなので、インストールし直しました。
test.pyを実行するために、上バーから「Terminal→New Terminal」を選びます。
右下に表示されたターミナルで、以下を入力。
$ cd Python
$ cd test
$ python3 test.py
「Hello world」と表示されれば成功です!
pipのインストールと、ライブラリの追加
WSLのUbuntuにはPython3.8が最初から入っていて親切だなぁと思っていましたが、pipは入っていませんでした。
VSCodeの右下のターミナルを使って、pipをインストールします。
$ sudo apt install python3-pip
てきとうにライブラリをインストールします。わりと必要なものは一通り入っているようなので、今回はline-bot-sdkを入れてみます。
VSCodeのtest.pyを以下のように変更して実行してみます。
エラーが出なければ、「VSCode経由で、pipでline-bot-sdkを新しくインストールしたWSL2(Ubuntu)で、開発できる環境が整った」ことになります!
感想
少しひっかかったのは、
(1)WSLを実行するためにコントロールパネルで2か所にチェックを入れて再起動する必要があるところ
(2)WSL2に変換するためにカーネルのアップデートが必要なところ(ダウンロードしてインストールするだけ)
です。
それ以外は、全体的にUbuntu20.04が優秀だったので(特に最初からPythonが入っているところ)、すんなりいけました。
是非参考にしてください!
以上、メタラーまとんでした。
ではでは。