WSLとPython環境#
このノートブックでは、Widows環境下でのWSL(Windows Subsystem for Linux)を使用してPython環境を構築する方法について説明する。いくつかの方針が考えられるが、下記の導入を推奨とする。
Windowsターミナル
Windows Subsystem for Linux2(WSL2)
Note
授業の受講者で環境構築を希望される方は、事前の相談や資料の確認に加えて、作業前にバックアップ等を行うことを必須とします。 また、作成者(吉田)はWindowsユーザーではないので幾つかの情報が古い恐れがありますのでご了承願います。
Windowsターミナル#
ターミナルとは、CUI(Character User Interface)、つまりコマンドなどの文字列のみを用いてコンピュータを操作する環境を指す言葉である。 CUIに対して、普段我々が使っているポインタやウィンドウなどはGUI(Graphical User Interface)に相当する。
Windows Terminalは、2019年にマイクロソフトがリリースしたターミナルでコマンドプロンプトやPowerShellといったWindows独自のCUIに加えて後述のWSLを統合的に扱うことができる環境となっている。 Windows11以降は標準で入っているのでWindowsボタンでメニューを開き、「ターミナル」「terminal」などと検索すると出てくる。
開く際に右クリックすると 管理者権限で開く 事もできる(WSLのインストール時に必要)。
WSLの導入#
オペレーティングシステム(OS)の源流を遡ると、大まかには2つに大別される。
1つがUnix系で歴史が古い。そしてもう1つはお使いのWindowsである。
Unixはあるところで枝分かれし、LinuxやMac OSなどもUnix系に含まれる。
サーバー用途のマシンや、スパコンなどの計算機環境ではLinuxがOSとして採用されている事が多い。
コンピュータの”計算機”としての側面や歴史的経緯から、プログラミング言語・開発環境などもUnix/Linuxとともに発展してきた部分が大きい。
一方でWindowsは、一般家庭でのコンピュータの需要拡大とともに独自の進化を遂げてきた。
Windowsユーザーが、プログラミング環境の構築やLinux-likeな作業をしたい場合、方法は幾つかあるが最近だとWindows Subsystem for Linux (通称WSL)を使うのが、最も簡単かつ安全な方法の1つとされている。
この章ではWSLを介して、Linuxの中のUbuntuというディストリビューションを使うことにする。
手順1. WSLと仮想マシンプラットフォームの有効化
スタートメニューから「コントロールパネル」を検索して開く

コントロールパネルの[プログラム]>[Windowsの機能の有効化または無効化] を選択し
「Linux用Windowsサブシステム」
「Virtual Machine Platform」または「仮想マシン プラットフォーム」(※日本語表記か英語表記のどちらか一つが存在するはず)
の2つにチェックを入れて有効化する(再起動が必要)。 その際、他は触らないこと。もし誤ってチェックをしたり外したりしてしまった場合は一度キャンセルを押してやり直そう。
最近は、購入時からチェックが入っていることもある。
手順2. Linuxカーネル更新プログラムの適用
※厳密に言うと、この作業が必要でないマシンもあるが、一度試してみよう。
このページの手順4にあるリンクから「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」をクリックし、ダウンロードしたファイルを実行する(パッケージはx64/Arm64の2つあるが、後者は文字通りArm64用で、これを読んでいる多くの人は該当しないと思われる)。
Next→Windowsシステム側の警告「はい」を選択→Finishで完了する。
必要ない/該当しない場合は、その旨が表示されるので、無視して次の手順に進む。
手順3. Windows TerminalからWSLのインストール
スタートメニューからterminalなどと打ち込んでターミナルを開く。
ターミナルの上で右クリックして[管理者として実行]する
「このアプリがデバイスに変更を加えることを許可しますか」といったポップアップが出た場合、はいを選択すれば良い。次にターミナルに
wsl --install -d Ubuntu
と打ちEnterを押すことで、Ubuntuのインストールが始まる。
手順4. Ubuntuの起動
新しいウィンドウが開く※ので指示(Press any key to continue…)があればそれに従って適当なキーを押す。
※ウィンドウが開いたときにerror: 0x800701bcが発生している場合は、手順2→4を再度行ってみよう。 もしもそれでも解決しない場合は、教員に尋ねること。
手順5. Ubuntuの初期設定
しばらくすると
Enter new UNIX username:
とLinuxシステム用のusernameを求められるので適当なものを入力してEnterを押す。
usernameは半角英数字にしよう。あとは…短い方があとあと便利。その後
NewPasswordとパスワードの設定を求められるので打ち込んでEnter
この際、パスワードの秘匿化のために何も表示されずカーソルも動かないが、入力しているので安心して間違わないよう打ち込もうRetype new password(もっかい打て)と言われるのでもう一度ユーザー名が緑色で表示されていて、エラーメッセージ等がなければOK
上記の手順以降は、スタートメニューからUbuntuと検索してUbuntuを開いても良いし
Windows terminalのタブの”+”のさらに右にある∨マークから
Ubuntuを選択すると(あるいはショートカットで)、Windows terminalの上でUbuntuが開く。
なお、デフォルトの設定だとUbuntuを開くとUbuntuのホームディレクトリで開くし
Windows terminalから開くと、Windows側のホームディレクトリにいる状態で開く
WSL下でのPython環境の構築#
※以下では、直接/Windows TerminalのどちらでUbuntu環境を開いている場合も
便宜上”Ubuntuターミナル”と呼ぶことにしよう。
WSL下にPython環境構築をする方法は以下の通り
手順1. aptのupdate/upgrade
Ubuntuターミナルで以下を入力し実行する
$sudo apt update $sudo apt upgrade
注:上の
$は打ち込むのではなく、 Ubuntuターミナルの末尾にある$を指し
Pythonの対話モードなどで打ち込む場合と区別するための表記。sudoはコマンドの頭につけることで管理者権限で実行する、という命令を意味する。
実行時に、Ubuntu用に設定したパスワードが要求される。
入力しても画面には表示されないので注意しながら打ち込んでEnterを押す。
(間違っても再度入力を求めてくれるし、やめたければCtrl+C)aptはLinux(Debian系)のパッケージ管理システムである。
$sudo apt install xxxx
などとして、様々なものを簡単にインストールすることが出来る。
※PCの時刻設定がきちんと行われていないと、aptのupdateやupgradeに失敗することがあるので注意。手順2. Pythonのインストール
Ubuntuには初めからPython3系が含まれている。Ubuntuのバージョンなどによってバージョンが異なるが、 サポートされているバージョンであれば問題ない。
pipというPythonのパッケージマネージャが無い場合は、以下のコマンドでpip込みでインストールできる。
$sudo apt install python3-pip -y
これでpython3.xとpython用のパッケージマネージャpipがインストールされる(手順1でaptのupdate/upgradeが終わっていないと失敗することがあるので注意)。
手順3. Pythonの対話モードに入ってみよう
インストールが終わったら
python3と打ち込んでEnterを押すと
Pythonの対話モードに入る(Pythonのバージョンも確認できる)。対話モードの中で>print("Hello")
などと打ち込んで実行してみよう。
打ちかけの作業を消したり、処理を中断する際は
Ctrl+Cを、対話モードから抜けたければCtrl+Dを入力する。 (書きかけのコードがあったり処理が実行されているときは先にCtrl+Cで中断してからCtrl+D)手順4. ライブラリのインストール
ライブラリ・モジュールをインストールしたければUbuntuターミナルから
$pip3 install matplotlib $pip3 install pandas $pip3 install Selenium
などを実行する。ただし、およそ3.11以降からライブラリの管理に関する指針が変更になったため、仮想環境の作成が推奨されるようになった。 詳しくはこちらの資料を参照のこと。
Google Colab環境では毎度
!pip install japanize-matplotlib
などとしましたが、一度インストールしておけば
コードの実行のたびにpipでインストール作業を行う必要はありません。
(ライブラリのimportはセッションごとに必要)
よくあるトラブル: WSLの導入#
WSL導入時のよくある問題をまとめる。
症状 |
確認すること |
|---|---|
|
Windows Update後、PowerShellを管理者として開く。古いWindowsではWSLの手動導入が必要な場合がある |
|
|
インストールが 0.0% で止まる |
|
|
「Linux用Windowsサブシステム」が有効になっていない可能性がある |
|
BIOS/UEFIで仮想化支援機能が無効、またはVirtual Machine Platformが無効の可能性がある |
Ubuntuのパスワード入力で文字が出ない |
正常。何も表示されないまま入力してEnterを押す |
Ubuntuのパスワードを忘れた |
PowerShellで |
現在のWSLの状態は次で確認できる。
wsl --version
wsl --status
wsl --list --verbose
wsl --unregister Ubuntu はUbuntu環境を削除する命令であり、中のファイルも消える。
環境をクリーンしたい場合や最終手段として扱う。
その他の注#
Windows/Linux環境#
Windows StoreからPythonのインストールを行い、WSLの環境構築をした場合、WSLのターミナルから、双方のシステムのPython/pipが見える。
実行する際は、Windows側とLinux側、どちらのターミナル/Python/pipを使うのかを意識しよう。 Windows側のPython/pipには、python3.9.exeやpip3.9.exeなど実行ファイルを示す.exeがついているので、区別はしやすい。
Windows環境のどこにLinuxのファイルが保存されるか#
C:\Users\XXX\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
のXXX部分(や場合によってはドライブ部分C:)を皆さんの環境に置き換えたものが、Windows内に構築されたLinuxのルートディレクトリ(最上位のディレクトリ)となる。Ubuntuを開くと、rootfs以下のhomeディレクトリにログインした状態でターミナルが開く。
パスが上記と微妙に異なる場合は、WindowsのユーザーフォルダからAppDataを開いて、検索バーでUbuntuと検索すれば、該当するディレクトリが見つけられるはず。(隠しフォルダを非表示にしていると見えないかも)
Windows11の場合は適当なフォルダ(エクスプローラー)を開くと左側にLinuxのペンギンマークがあるので、そこから参照できる。
Linux側からWindows側のファイルにアクセスする#
WindowsのディスクはLinuxからみた/mnt/以下にマウントされている。
たとえば、/mnt/c/Users/[ユーザー名]/Downloads
で、Windows側のダウンロードフォルダのパスを指定できる。
OneDriveによるバックアップに含まれているフォルダはデフォルトパスから、OneDriveの下に変更されていることがあるので注意。
(例: デスクトップはLinuxから見ると/mnt/c/Users/[ユーザー名]/Desktopのはずだが、デスクトップフォルダがOneDriveのバックアップ対象になっていると、/mnt/c/Users/[ユーザー名]/OneDrive/Desktopなどと変更されてしまうので注意。)