VSCodeから外部のJupyterへ接続する
目的
自端末の計算リソースが乏しい場合などに、リソースの豊富な計算機のJupyterを使用したいシーンがあります。ブラウザでJupyterを開けばいいだけの話ですが、エディタとして優れたVSCodeを使用したままJupyterも利用したい、というわがままな要求を満たすための方法についてまとめます。
環境
Jupyter サーバ (Windows10,Anaconda3 python3.7.6)
VSCodeクライアント version 1.46.0
python拡張機能
Step1 : Jupyterのconfig設定
VSCodeから外部のJupyterを使用する場合、VSCodeの拡張機能を使用することができますが、この拡張機能ではURLにtokenを埋め込んでアクセスする櫃ようがあります。そのため、Jupyterをパスワード認証ではなく、token認証方式にしておく必要があります。通常、tokenはJupyterサーバを起動するたびに生成されますが、今回は固定tokenを設定する方法について記載します。セキュリティ的には難ありなので注意。
ということで、まずはHOMEディレクトリの.jupyterフォルダにある、jupyter_notebook_config.pyを開きます。
ない場合は、以下を参考に作成してください。
jupyter_notebook_configファイルを開いたら、一番下に以下のようにtoken認証の記述を追加します。’ ‘の中に設定したいtokenの文字列を記載します。
c.NotebookApp.token = '<設定したいtoken>'
その後、Jupyter Notebookを再立ち上げします。再立ち上げの方法は一旦、サーバーの動作しているプロンプトの画面を閉じ、WindowsのスタートメニューのなかのAnaconda3 → Jupyter Notebookの順に開けばOkです。
以上で、Jupyter側の設定は終了です。
Step2 : VSCodeからの接続
VSCodeからの接続にはPythonの拡張機能を使用します。もしなければextensionからインストールします。
Pythonの拡張機能がインストールできている状態でF1キーを押し、表示されたサーチボックスの中にpythonと入力します。検索候補の中から
Python:Specify local or remote Jupyter server for connectionsをクリックします。
次にPick how to connect to Jupyterの選択がでますので、Existingを選択します。
するとEnter the URI of the running Jupyter serverと表示されます。
ここでtokenを埋め込んだJupyterサーバーのURIを以下のように入力します。
http://<hostname or IP>:8888/?token=<your_token>
下記例ではポートが8080となっていますが、通常Jupyterのデフォルトは8888になっているはずです。
以上でJupyterとの接続設定は完了です。
Step3 : Jupyterを使用して確認
最後に正しく接続できているかを確認します。
F1キーを押し、Python: Create New Blank Jupyter Notebookを選択します。
するとNotebookのセルが立ち上がるかと思います。この段階では右上にJupyter Server Not Startedと表示されているかもしれませんが、気にしなくても大丈夫です。
セルの中にと入力し、Shift + Enterを押します。
print("Hello World!")
すると、自動的にリモート先のJupyter serverと接続され、Hello worldと表示されます。右上の表示も相手先のJupyterのURIに変わりました。
無事にVSCodeからリモートのJupyterを使用することができました。
まとめ
リモートのリソースをVSCodeから使用できるメリットは個人的にはかなり大きいため、今後もこの環境を利用していきたいと思います。