atomを使いたい
dockerを使うとお手軽にjupyterを使えるpython環境が手に入ります。ただjupyterをそのまま使いたくないという謎のこだわりがある。
pythonを書くときの環境はjupyter notebookが便利。最近だとjupyterLabなんかも拡張機能とかもあって楽しいらしい。(参考:https://qiita.com/canonrock16/items/d166c93087a4aafd2db4)
しかし、私はatomを使いたい。特別理由はないがatomを使いたい。
pythonに関してはatomにHydrogenというパッケージを導入すればjupyterライクに出力を得られる。ただ、SSHでリモートマシンに接続したり、dockerコンテナ上のカーネルに接続する場合多少の設定が必要になる。
今回は、いろいろあって環境がぐちゃぐちゃになったので、docker上にpython環境を用意しatom上でHydrogenを使う環境を整えたのでその流れをメモに残します。
dockerコンテナの起動
docker imageを自分で用意する時間がなかったため、jupyter環境が最初から構築してあるimageを使わせてもらった。docker hubにいろいろあるが、自分はjupyter/scipy-notebookを使わせてもらった。
詳細は省かせていただきます。
***1.***docker imageをpull
docker pull jupyter/scipy-notebook
***2.***docker imageをrun
docker run -p 8888:8888 -v ~/hoge:/home/jovyan/work jupyter/scipy-notebook start-notebook.sh --NotebookApp.token='yourtoken'
オプションとして、
- -p: コンテナのポートをホスト側に公開してポートフォワーディング。例ではローカルの8888とコンテナの8888をポートフォワーディングしている。
- -v: ボリュームをマウント。フォルダの同期のため。例ではローカルのhogeとコンテナ内のhome/jovyan/workとをマウントしています。
- start-notobook.sh: jupyterのコマンドを使用するために必要なオプション.このあとじゃないと下記のNotebookAppというオプションが効かない。
- NotebookApp.token="yourtoken": jupyter側のコマンドで、tokenを指定
tokenは指定しないと毎回変わるので指定することをオススメ。
ここで、
Executing the command: jupyter notebook --NotebookApp.token=yourtoken
[I 14:19:25.923 NotebookApp] Writing notebook server cookie secret to /home/jovyan/.local/share/jupyter/runtime/notebook_cookie_secret
[I 14:19:27.362 NotebookApp] JupyterLab extension loaded from /opt/conda/lib/python3.7/site-packages/jupyterlab
[I 14:19:27.362 NotebookApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 14:19:27.365 NotebookApp] Serving notebooks from local directory: /home/jovyan
[I 14:19:27.366 NotebookApp] The Jupyter Notebook is running at:
[I 14:19:27.367 NotebookApp] http://(***):8888/?token=…
[I 14:19:27.367 NotebookApp]
Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
とでてきてdockerコンテナ上にjupyter kernelが起動できた。
ここまでできたら、Hydrogenへの設定へ。
Hydrogenの準備
調べればたくさん丁寧に説明してくれてる記事があるので、Hydrogenのインストール等は省略する。(こことか)
atomのpacageからHydrogenの設定画面へ行き、Kernel Gatewayというところに、こんな感じで記入。
nameは自分の好きなものを、baseUrlはdockerを起動したときにでてきたurlをコピペ、tokenは自分で設定したtokenを記入。
詳細はここ参照。
Hydrogenからリモートカーネルへ接続
- atomの画面からコマンドパレットを開き,Hydrogen:Connect To Remote Kernelを選択。
2.remote kernelが見つかれば次のように出てくるので、使いたいカーネルを選択。
ここまできたら、あとは通常のHydrogenと同じように使えるはず。
まとめ
Hydrogenを使えば、atomのエディタ機能を使いながらjupyterのインタラクティブな機能をふんだんに使える。jupyter用のショートカットを覚える必要もない。docker使えば環境設定の必要もほぼいらない。python使う人はatomとHydrogen使いましょ。
(jupyter labとかは進化が目まぐるしいので、ちょっとさわってもいいかな・・・)
ssh接続でリモートマシン上のカーネルを使いたいときも同じようにできると思います。
参考
Jupyterをブラウザで使うのをやめてAtomのHydrogenに移行した話
JupyterのDockerイメージまとめ
Hydrogen
jupyter docker stacks