知り合いからJupyterLab という素晴らしいものがあるという話を聞いたので、さっそく当方の環境にインストールしようとしたのですが、Extensionsのインストールで少々躓いてしまったので、メモを残しておこうと思います。
JupyterLab については、JupyterLabのすゝめ に詳しくまとまっていると思いますので、そちらをご覧いただければよいと思います。
インストール環境
当方のインストール環境は、タイトルにある通り、CentoOS6です。(少し古いですね。。。)
また、インストール先のPythonバージョンはPython3.6です。
Python2系にインストールする場合でも、ほぼ同様の手順になるんじゃないかと思います。
また、当方環境は、プライベートネットワーク上にあるサーバーです。
そのため、CentoOSサーバーとは別のPCからSSH接続してインストール作業を行うで、そのあたりはMacやWindowsとは少し作業イメージが異なるかもしれません。
JupyterLab のインストール
これは、Githubのページ にある通りでスムーズにインストールできました。
$ sudo pip3 install jupyterlab
Extensions のインストール
JupyterLabのすゝめ では、JupyterLabを使うなら、Extensionsもインストールすることをお勧めされていたので、私もそのようにしてみたいと思います。
Node.js のインストール
Extensionsを使用するには、Node.jsをインストールする必要があるようです。
2019年6月19日現在では、v6.11.5以上のバージョンを要求されました。
Node.js のインストールはnvmを使ってインストールすることが多いようなのですが、これは開発環境を構築するのには便利だけども、サーバーにグローバルインストールするには不便らしいです。
実際、私も一度nvm を使ってグローバルインストールに試みましたが、非常にややこしいことになりそうになったので中止しました。
サーバーにグローバルインストールするなら、nコマンド経由でインストールする方が便利なようなので、そのようにしてみようと思います(結局のところ node.js をサーバーにインストールするにはどうやればいいのか?)。
$ sudo yum install nodejs npm --enablerepo=epel
$ sudo npm config set strict-ssl false
$ sudo npm install -g n
$ sudo npm config set strict-ssl true
$ sudo n stable
これで、CentoOS6でも利用可能なv10.16.0をインストールできました。
(最新バージョンをnvmからインストールしようとすると、古いCentoOSを使用しているゆえに、GCCバージョン問題にぶつかります。)
jupyterlab-gitをインストール
試しにExtensionsの一つであるjupyterlab-git をインストールしてみたいと思います。
$ sudo jupyter3 labextension install @jupyterlab/git
$ sudo pip3 install --upgrade jupyterlab-git
$ sudo jupyter3 serverextension enable --py jupyterlab_git
これで、一般ユーザーからJupyterLabを立ち上げてもgit機能が使えるようになりました。
jupyterlab-toc のインストール
もう一つ、お勧めのExtensionであるjupyterlab-tocインストールしてみます。
これは、Mardown の見出しに沿って、目次を自動作成してくれるExtensionです。
$ sudo jupyter3 labextension install @jupyterlab/toc
JupyterLab の立ち上げ
あとは、一般ユーザーからJupyterLabを立ち上げれば良いのです。
普通は、立ち上げるには、
$ jupyter3 lab
で自動的にブラウザが立ち上がり、JupyterLabにアクセスできます。
しかし、このやり方だと、当方環境のようにサーバーにSSHで接続するような使い方だと、サーバー上のブラウザが立ち上がり、XWindowがローカルに飛んでくるため、非常に遅い動作になります。
そこで、SSHポートフォワーディングを使用して、ローカルのブラウザからリモートサーバーに立ち上がっているJupyterLabにアクセスするという方法をとります。
まずは、ブラウザ表示なしでJupyterLabを立ち上げます。
$ jupyter3 lab --no-browser
すると、以下のようなメッセージが表示されると思います。
[I 15:44:26.602 LabApp] [jupyter_nbextensions_configurator] enabled 0.4.1
[I 15:44:26.620 LabApp] JupyterLab extension loaded from XXXXXX
[I 15:44:26.620 LabApp] JupyterLab application directory is XXXXXXXXXXXXXX
[W 15:44:26.622 LabApp] JupyterLab server extension not enabled, manually loading...
[I 15:44:26.638 LabApp] JupyterLab extension loaded from XXXXXXXXXXXXXXXXXX
[I 15:44:26.638 LabApp] JupyterLab application directory is XXXXXXXXXXXXXXXXXXX
[I 15:44:26.639 LabApp] Serving notebooks from local directory: XXXXXXXXXXXXXXXX
[I 15:44:26.639 LabApp] The Jupyter Notebook is running at:
[I 15:44:26.639 LabApp] http://localhost:8880/?token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[I 15:44:26.639 LabApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 15:44:26.643 LabApp]
To access the notebook, open this file in a browser:
file:///XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Or copy and paste one of these URLs:
http://localhost:8880/?token=XXXXXXXXXXXXXXXXXXXXX
この場合は、リモートサーバーの8880番ポートにJupyterLabサーバーを立ち上げたという意味になります。
次に、新しいターミナルをローカルPCで立ち上げ、以下のように8880番ポートをポートフォワーディングして接続します。
$ ssh -L 8880:localhost:8880 [ユーザー名]@[リモートサーバーのIPアドレス] -i [SSHの鍵]
これで、あとは、ローカルPCのブラウザを立ち上げて、JupyterLabを立ち上げたときに表示されたメッセージにあるようにhttp://localhost:8880/?token=XXXXXXXXXXXXXXXXXXXXX
にアクセスすれば、JupyterLabに入れます。
余談
今回は、rootユーザーでインストールを行っているので、何かExtensionsをインストールしようとしても、上記ような調子でroot権限を使ってExtensionsをインストールする必要があります。
一般ユーザーでJupyterLabを立ち上げて、そこからExtension Mannager を使ってインストールしようとすることはできるのですが、以下のようなエラーが表示されてインストールできませんでした。
Error communicating with server extension. Consult the documentation for how to ensure that it is enabled.
Reason given:
Error: 500 (Internal Server Error)
症状からして、恐らくroot権限がないことが原因なんじゃないかと思います。
また、root権限でコンソールからインストールして、その時にExtensionsを有効化してしまっているためか、一般ユーザーはExtensionsの有効化をやらなくてもよいようです。