Ubuntu on Windowsでmatplotlibを動かすまで

環境構築メモ。Windows10上にLinux(Ubuntu)環境を導入し、さらにGUI環境を導入してmatplotlibによるグラフ表示をできるようにするまでの方法である。

昔(大学生時代)は、WindowsとLinuxをデュアルブートしてLinuxメインで使ってたけど、Windowsでしか動かないアプリがあったり、デュアルブートだと環境の切り替えとかが色々面倒なので、今はWindowsメインでLinux環境はWSLを利用している。

Ubuntuのインストール

①設定→アプリ→アプリと機能を開く

②一番下の「プログラムと機能」をクリックして開く

設定

③「プログラムと機能」の画面で、左側の盾のマークついた「Windowsの機能の有効化または無効化」をクリック

プログラムと機能

④「Windowsの機能の有効化または無効化」で、「Windows Subsystem for Linux」にチェックを入れ、OKをクリック

Windowsの機能

⑤有効化が完了したら、Microsoft StoreからUbuntuを検索し、インストールする。「Ubuntu」の他に、「Ubuntu 18.04LTS」などのバージョン付きもあるが、絶対にUpgradeしないという人以外は「Ubuntu」を選んでおくべし。ダウンロードサイズは220MBくらいだった。

初期設定とパッケージ導入

①インストールが完了したらスタートメニューから「Ubuntu」を開く。初回起動時にusernameとpasswordを聞かれるので入力して設定完了とする。

ubuntu-login

②下記のコマンドを実行

# パッケージの更新
sudo apt update
sudo apt upgrade

# 日本語環境設定
sudo apt install language-pack-ja
sudo update-locate LANG=ja_JP.UTF8 
sudo apt install manpages-ja manpages-ja-dev

# 「python」でpython3を起動するように設定する(必須ではないが便利)
cd /usr/bin
sudo ln -s ./python3 ./python

# pipインストール
sudo apt install python3-pip

# matplotlibと数値計算系パッケージを一通りインストール
pip3 install numpy, scipy, sympy, matplotlib

# GUI表示を可能にするためPython3-TKとついでにテスト用X11アプリ集もインストール
sudo apt install python3-tk x11-apps

とりあえずWSL側はこれでOKだが、これだけではまだGUIアプリは動かない。

WindowsとWSLのディレクトリー関係

WindowsとWSLのルートディレクトリーの関係は次の通り。Windows側とWSL側それぞれにショートカット(シンボリックリンク)を作っておくとよいだろう。

WSLWindows
/mnt/cC:\
/C:\Users\****\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\

X Serverのインストール

Windowsで動くXServerにはVcXsrv、Xming、Cygwin/Xなどがあるが、私はVcXsrvを選んだ。

https://sourceforge.net/projects/vcxsrv/からインストーラーをDLし、インストール実行。

②スタート→VcXsrv→xlaunchをクリックし、起動。

③Display settingsの画面が開く。Multipuleを選択し、次へ。

xlaunch - Display settings

④Client startupの画面が開く。Start no clientを選択し次へ。

xlaunch - Client settings

⑤Extra settingsの画面が開く。Clipboard、PrimarySelection、Native openglをチェックして次へ

xlaunch - Extra settings

⑥ Finish configuration画面で、Save configurationをクリックし、適当な場所に設定ファイル(*.xlaunch)を保存し、完了する。

xlaunch - Finish

⑦保存した設定ファイルを実行すると、VcXsrvが起動する。スタートアップに登録しとくと、PC起動時に自動実行されるので楽。Windows+Rで開く「ファイル名を指定して実行」で、shell:startupの入力すると開くフォルダーに設定ファイルを入れておけば良い。

VcXsrvが起動すると、タスクバーに下の画像のようなXのアイコンが現れる

タスクバーアイコン

⑧再びUbuntuを起動し、~/.bashrcを作成し、次の一行を入力して保存する。(もしファイルが既にあれば末尾に追記)

export DISPLAY=:0.0

動作確認

①Ubuntuを再起動する

②xeyesを実行する。目玉の画面が出ればVcXsrvが正しく動作していることになる。

xeyes

③pythonを起動し、適当にプロットしてみる。show()を実行するとGUI画面にグラフが出るはず。

matplotlib

追伸

その後一部GUIアプリで日本語が豆腐□になっていた。下記コマンドを実行したら解決した

sudo apt install -y $(check-language-support -l ja) language-pack-ja