超メモです。$
は削除して実行してください
WSLでJupyter Labを動かす方法
nodejsは最新版を推奨する。それ以外だとエラーが出ることがある。pip3でsudoは付けない。以下、実行すべきコマンド。
$ sudo sed -i.bak -e 's%http://[^ ]\+%mirror://mirrors.ubuntu.com/mirrors.txt%g' /etc/apt/sources.list $ sudo apt -y update && sudo apt -y upgrade && sudo apt -y install build-essential python3-pip $ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - $ sudo apt -y install nodejs $ pip3 install --upgrade setuptools $ pip3 install testresources metakernel nodejs $ pip3 install jupyterlab widgetsnbextension
pip3をユーザー権限で叩くと、$HOME/.local/bin
に実行ファイルが置かれるので、~/.bashrc
に以下を追記する。
PATH="$HOME/.local/bin:$PATH"
Jupyter Labを起動してみる。
Windows上だと --no-browser
は必要ないが、WSLからブラウザは開けないので、--no-browser
オプションを必ず付けて、ブラウザなしで起動する。
$ jupyter lab --no-browser
とすると、
Or copy and paste one of these URLs: http://localhost:8889/lab?token=94b26............. http://127.0.0.1:8889/lab?token=94b26.............
とURLが表示されるので、これをWindowsのブラウザ(Google Chrome)のURLが表示されているところに貼り付ける。
拡張機能をインストールすると、再ビルドを求められることがある。
$ jupyter lab build $ jupyter lab --no-browser
拡張機能をブラウザからインストールできないときは、コマンドラインからインストールを試す。補完用のtocはブラウザからなぜかインストールできなかった。
$ jupyter labextension install "@jupyterlab/toc"
Jupyter Lab上でROOT C++/PyROOTを動かす
まず、ROOTを入れる。ハードルは高いが頑張る。権限の問題から、/opt/root/6.22.08
ではなく、ユーザーディレクトリ、例えば $HOME/root/6.22.08
にインストールするのが望ましい。
プリコンパイルバージョンは、画像のライブラリの一部がコンパイルされていないため使えない。
~/.bashrc
に、ROOTのPATHを追加する
export ROOTSYS=$HOME/root/6.22.08 cd $ROOTSYS source bin/thisroot.sh cd - > /dev/null
Jupyter Labをインストールする。以下、実行すべきコマンド。
$ sudo apt -y install python3-pip $ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - $ sudo apt -y install nodejs $ pip3 install --upgrade setuptools $ pip3 install testresources metakernel nodejs $ pip3 install jupyterlab widgetsnbextension
Jupyter-Labを起動し、URLをブラウザで開く。
jupyter lab --no-browser
すると、以下のように、PythonとROOT C++が表示されるはずである。
サンプルコードは公式から引用する。
TH1F *h = new TH1F("gauss","Example histogram",100,-4,4); h->FillRandom("gaus"); TCanvas *c = new TCanvas("myCanvasName","The Canvas Title",800,600); h->Draw(); c->Draw();
こうなればOK。当然Pythonからpyrootも動くのでPython 3の方からノートを作り、
import ROOT h = ROOT.TH1F("gauss","Example histogram",100,-4,4) h.FillRandom("gaus") c = ROOT.TCanvas("myCanvasName","The Canvas Title",800,600) h.Draw() c.Draw()
こうなればOK。
Jupyter Notebook上でjsrootを動かす
jsrootはブラウザ上でROOTファイルを動的に扱うJavaScriptのライブラリ。Jupyter Labでは使えないので、Jupyter Notebookを動かす。
root --notebook --no-browser
でJupyter Notebookを開くと、%jsroot
(jsrootの有効化)で、Drawすると軸が動的に触れるようになる。
有効化するには ROOT.enableJSVis()
と書いても良い。無効化するには ROOT.disableJSVis()
で静的に戻る。
参照: nodejsのインストール方法
GitHub - nodesource/distributions: NodeSource Node.js Binary Distributions
途中で出たエラー(検索用)
ImportError: cannot import name 'StaticModule' from 'setuptools.config' (/usr/lib/python3/dist-packages/setuptools/config.py)