Jupyter & bash_kernel on Bash on Ubuntu on Windows (Anniversasy Update) - Anaconda (Linux版) 編
こちらの記事はAnniversasy Update 版のものです。 Creators Update 版は以下のリンク先で記事を作りました。
参照リンク先とほぼ同じ方法でインストールした。
自分の使い方では、複数のバージョンの python の使い方を分ける必要がないので pyenv を入れない。 Tensorflowも今のところいらない。
Anaconda
Bash on Ubuntu on Windows にインストールするのでLinuxのインストーラをダウンロードする。 Anaconda をインストールしたところ、システム側よりもこちらの方が呼び出されるようになった。
Anaconda の気になる点は使わない package と 他の binary もインストールされる。 Qt などもあったような。詳細は問題が起きたら調べる。
逆に言えば、確認済みの環境を丸ごと持ってきているので動く可能性が高い。 Windows版ではRも入ったような気がするが、今回は入っていない模様。
$ wget <URL>/Anaconda3-*.sh $ bash Anaconda3-*.sh
これでホームディレクトリに python が入り、.bashrc まで編集する。
重要:intel Math Kernel Library を無効にする
AnacondaはNumpyなどに使うBLAS APIが intel Math Kernel Library (MKL) です。 Numpyなどを使わないコードは問題ありませんが、使うものはエラーを返し正常に動作しません。 Bash on Ubuntu on Windows に通常MKLは入っていないのでanacondaに明示的に使わないことを伝えます (他のBLAS APIを参照するようになると思われます。)
$ conda install nomkl
$ conda update --all
Jupyter
すんなり入ってくれないので、ひと手間必要。
zeromq 問題
通常のUbuntuでも zeromq 周りが同様の不具合があった気がします。
anaconda の場合、標準でインストールされるが Bash on Ubuntu on Windows ではされない。 システム Python を使用した場合も同じだが、zeromq が古いので、これを入れ替える。
$ conda install -c jzuhone zeromq=4.1.dev0
conda install のcオプションは CHANGE らしい。使用パッケージの変更?
- jzuhone : contributor name?
- zeromq : package
anaconda の以下のページにヒットした。 Zeromq :: Anaconda Cloud
本体のインストール
$ conda install jupyter # インストール $ jupyter notebook # jupyter の起動
OSで設定されている標準webブラウザが立ち上がり作業が開始できる状態になるが、 Bash on Ubuntu on Windows の場合、w3m (テキストベースのブラウザ)が起動する。 w3mでは殆どの場合、目的に合わないと思うので"Q"か"q"を入力してブラウザを閉じる。
Windows 本体にインストールしてある適当なブラウザで確認できたらJupyterを止める。 (Bash on Ubuntu on Windows のコンソールをアクティブにしてCtrl-Cを押せばJupyterを止められる)
w3m を起動しないようにする
以下のオプションを追加することでw3mは起動しない。
$ jupyter notebook --no-browser
しかし、いちいちオプションを追加して起動するのも面倒なので、設定ファイルを作成する。 以下のコマンドを打つと .jupyter/jupyter_notebook_config.py が作成される。
$ jupyter notebook --generate-config
適当なエディタで、jupyter_notebook_config.py を開くと、 コメントアウトされた設定から以下のようなオプションを探し、 アンコメントしてTrueからFalseへ変更する。
c.NotebookApp.open_browser = False
bash_kernel : jupyter
conda にてパッケージを検索したところ、どうも登録されていないようだ。 pypi 全てを網羅しているわけではないらしい。
一応 pip でインストールをしてみたところ稼働した。
$ pip install bash_kernel
$ python -m bash_kernel.install
この方法だと後に anaconda にパッケージが登録された時に衝突などしないのだろうか?
追記:Python kernel 限定のマジックでbash
以下の表記で bash kernel like なことができる。 当然ながら Windowsでは、bashのインストールが前提となる。 Rなど他のkernelでもできないかと思ったが駄目だった。標準カーネルなったら追加してくれるとかないかな。
%%bash ls
以下の記事を参考にさせていただきました。