Python
ATOM
Docker
Jupyter
hydrogen

atom使いのためのdockerとHydrogenによるお手軽python環境構築


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-notebook start-notobook.sh —NotebookApp.token="yourpass"

オプションとして、


  • -p: コンテナのポートをホスト側に公開。

  • -v: ボリュームをマウント。フォルダの同期のため。

  • jupyter-notebook start-notobook.sh: jupyterのコマンドを使用するために必要なオプション.

  • 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というところに、こんな感じで記入。

スクリーンショット 2019-04-14 23.50.01.png

nameは自分の好きなものを、baseUrlはdockerを起動したときにでてきたurlをコピペ、tokenは自分で設定したtokenを記入。

詳細はここ参照。


Hydrogenからリモートカーネルへ接続


  1. atomの画面からコマンドパレットを開き,Hydrogen:Connect To Remote Kernelを選択。
    スクリーンショット 2019-04-14 23.57.05.png
    2.remote kernelが見つかれば次のように出てくるので、使いたいカーネルを選択。

スクリーンショット 2019-04-14 23.59.22.png

3.セッションを選択。

スクリーンショット 2019-04-14 23.59.43.png

ここまできたら、あとは通常のHydrogenと同じように使えるはず。


まとめ

Hydrogenを使えば、atomのエディタ機能を使いながらjupyterのインタラクティブな機能をふんだんに使える。jupyter用のショートカットを覚える必要もない。docker使えば環境設定の必要もほぼいらない。python使う人はatomとHydrogen使いましょ。

(jupyter labとかは進化が目まぐるしいので、ちょっとさわってもいいかな・・・)

ssh接続でリモートマシン上のカーネルを使いたいときも同じようにできると思います。


参考

Jupyterをブラウザで使うのをやめてAtomのHydrogenに移行した話

JupyterのDockerイメージまとめ

Hydrogen

jupyter docker stacks