Bash on Windows で jupyter + matplotlib 環境を作る

Bash on Windows 上にpython環境を作る」で、Bash on Windows上にPython環境ができたので、jupyter notebookが使えるように整えます。

jupyter notebookは、コードとドキュメント、結果をまとめて記述したり、残したり、公開したりできるメモ帳です。ブラウザで動きます。残してよかったってことあまりないですが、インタラクティブに結果を見て、コードを少しずつ作っていく場合に便利です。

jupyterをインストール

venvで仮想環境を作っているのであれば、activateしてからpipでインストールします。

(fx) [~] $ pip install jupyter

下記のコマンドで起動できます。

(fx) [~] $ jupyter notebook

Bash on Windowsで環境作っていてブラウザはセットアップしてないので、下記のようにブラウザが見つからないので、自分で立ち上げてURLをコピペしてねと言われます。

(fx) [~] $ jupyter notebook
[I 09:10:50.157 NotebookApp] Serving notebooks from local directory: /mnt/c/home
[I 09:10:50.157 NotebookApp] 0 active kernels
[I 09:10:50.157 NotebookApp] The Jupyter Notebook is running at:
[I 09:10:50.157 NotebookApp] http://localhost:8888/?token=bfab78cff228bec65335c8735094cd9c00365f79229eeee5
[I 09:10:50.157 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 09:10:50.168 NotebookApp] No web browser found: could not locate runnable browser.
[C 09:10:50.168 NotebookApp] 

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://localhost:8888/?token=bfab78cff228bec65335c8735094cd9c00365f79229eeee5

なので、http://localhost:8888へアクセスするとjupyter notebookが使えます。

jupyter screen shot

matplotlibの環境を作る

下記のコードでmatplotlibの結果をjupyter notebookへインライン表示します。

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.linspace(0, 2*math.pi, 1000)
y  = np.sin(x)
plt.plot(x, y)

実行にはmatplotlibが必要なので、pipでインストールしておきます。

(fx) [~/workspace/fx] $ pip install matplotlib

下記のようにインライン表示できました。

jupyter matplotlib

気になったのでインタプリタでmatplotlibやってみる

Bash on Windoews で X Window 環境作っているので、jupyter notebookではなく、普通のインタプリタでやってみました。

まさかのエラー。jupyter notebookでは表示されるのになぜか?

>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
  File "/usr/lib/python3.5/tkinter/__init__.py", line 36, in <module>
    import _tkinter
ImportError: No module named '_tkinter'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/mnt/c/home/env/fx/lib/python3.5/site-packages/matplotlib/pyplot.py", line 115, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "/mnt/c/home/env/fx/lib/python3.5/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup
    globals(),locals(),[backend_name],0)
  File "/mnt/c/home/env/fx/lib/python3.5/site-packages/matplotlib/backends/backend_tkagg.py", line 6, in <module>
    from six.moves import tkinter as Tk
  File "/mnt/c/home/env/fx/lib/python3.5/site-packages/six.py", line 92, in __get__
    result = self._resolve()
  File "/mnt/c/home/env/fx/lib/python3.5/site-packages/six.py", line 115, in _resolve
    return _import_module(self.mod)
  File "/mnt/c/home/env/fx/lib/python3.5/site-packages/six.py", line 82, in _import_module
    __import__(name)
  File "/usr/lib/python3.5/tkinter/__init__.py", line 38, in <module>
    raise ImportError(str(msg) + ', please install the python3-tk package')
ImportError: No module named '_tkinter', please install the python3-tk package

エラーメッセージ通り、python3-tkをインストールします。

$ sudo apt install python3-tk

python3-tkを入れてから実行するとうまく表示できました。最後のplt.show()を忘れずに。

command matplotlib

以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする