WSLを利用してWindowsでC++のJupyterカーネル(xeus-cling)を動かす

WSL(Windows System for Linux)を利用してC++用Jupyterカーネルであるxeus-clingをWindows10搭載マシンで動かしてみた際のメモです。(2018/4/15実行)

OSはWindows10 Pro バージョン 1709
WSLのディストリビューションはDebianを採用しました。

WSLのインストール

まずはWSLをインストールします。
WSLのインストール手順については以下などを参照してください。
https://qiita.com/Brutus/items/f26af71d3cc6f50d1640
(2018/1/25 更新)
http://qiita.com/Aruneko/items/c79810b0b015bebf30bb 
(2017/11/2 更新)

Jupyterの準備

Jupyterを使うために、WSL上にpyenvとAnacondaをインストールします。
以下はhttps://qiita.com/yaju/items/1130c56abe64ec9d9827   
(2018/1/13 更新)
及び、https://qiita.com/dd511805/items/23891da61559405fd5f6 
(2017/1/27 更新)
より抜粋しました。

pyenvのインストール

$ sudo apt-get install aptitude
$ sudo aptitude install git
$ git clone https://github.com/yyuu/pyenv ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc

Anacondaのバージョン確認

$ pyenv install --list

して、表示される中からAnaconda3の最新バージョンを確認してください。
(本記事作成時点ではAnaconda3-5.1.0が最新でした)

Anacondaのインストール

バージョンは適宜変更してください

$ pyenv install anaconda3-5.1.0
$ pyenv global anaconda3-5.1.0
$ pyenv rehash

(筆者の環境では、ここで30分以上かかりました)

Jupyterの実行

Anacondaが正常にインストールされていればJupyter notebookが実行できるはずなので、
ここで一度試してみましょう。

$ jupyter notebook

を実行すると以下が表示されます。

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

表示されている長いクエリ付きURLをお使いのブラウザに入力してください。

xeus-clingのインストール

Jupyterが無事実行できれば、次にxeus-clingをインストールします。
QuantStack/xeus-cling: https://github.com/QuantStack/xeus-cling

上記のページのInstallationと同様の手順でインストールすることができます。
WSLを起動して

$ conda create -n cling
$ source activate cling
$ conda install xeus-cling notebook -c QuantStack -c conda-forge

を実行すればOKです。
(筆者はここでも30分以上かかりました)

Hello World

最後に実際にテストプログラムを動かしてみます。
まずJupyterを起動します。
すると、以下のようにC++11、C++14、C++17のオプションが増えているはずです。
とりあえずここではC++17で新しいNotebookを作成します。

じゅpy.jpg

テストとして、以下のプログラムをセルに入力します。

#include <iostream>

std::cout << "Hello World" << std::endl;

実行結果が以下のようになっていれば無事導入できているはずです。

hello world.jpg

以上です。
問題、修正すべき点があればお知らせください。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.