Python
Jupyter
VSCode
VisualStudioCode
Jupyter-notebook

VSCodeのPython拡張機能が更新されJupyter Notebookが扱いやすくなったので試してみた

VSCodeのPython拡張機能が更新されたと発表され、Jupyter Notebookの扱いが便利になったようなので確認してみました。

要約

  • VSCode上でPythonコード(拡張子.py)を#%%の区切り単位で実行できる
  • 実行結果はコードと合わせてJupyter Notebook形式(拡張子.ipynb)で出力できる
  • 逆に既に作成されたJupyter Notebook形式のファイルを#%%で区切られたPythonコードに変換することもできる
  • つまりVSCodeのみでJupyter Notebookの新規作成や既存ファイルの編集を完結させられる

環境

OS : Windows10 (10.0.17134)
Visual Studio Code : 1.28.2
VSCodeのPython拡張機能 : 2018.10.1
python : 3.6.6
jupyter : 1.0.0
jupyter_contrib_nbextensions : 0.5.0
パッケージ管理にはconda(4.5.11)を使用し、pipでは検証していません。

仮想環境の作成

conda create -n test -y

testは適当に付けた仮想環境名であり、実際には自由に好きな名前を付けて下さい。

Jupyter Notebookの扱いに必要なパッケージのインストール

conda install jupyter jupyter_contrib_nbextensions -y

jupyter_contrib_nbextensionsがないと後のファイル変換の際にエラーが出ます。

今回の動作確認用に使用するパッケージのインストール

conda install numpy matplotlib -y

拡張子.pyのPythonファイルを新規作成

ここではtest.pyとします。

作成した仮想環境をVSCodeで選択

下記記事などを参考にして下さい。

Visual Studio Code のデバッグで、virtualenv, venv のPython仮想環境を使う
https://qiita.com/82p/items/7c1b3b6c470b2f08bf51

実行してみる

実行単位となるセル毎に先頭に#%%を付けるとその上にRun Cellと表示されるので、クリックするかShift+Enterを押して実行します。
すると右側に新しいウインドウ(Python Interactive)が開いて実行結果が表示されます。

6.png

Jupyer Notebook形式(拡張子.ipynb)で出力

保存ボタンをクリックするとJupyter Notebook形式で出力できます。(ファイル名をtest.ipynbとします。)

a.png

ブラウザで開いてみる

.ipynb形式で出力した直後に右下にこのような通知が表示され、「Open in browser」をクリックするとブラウザで開くことができます。

export.png

通知を消してしまった場合は、コマンドラインでjupyter notebookを実行して先程保存した.ipynb形式のファイルをブラウザで開きます。
開いてみると以下のように出力も行われた状態で保存されていることが分かります。このまま配布しても問題ないですね。

8.png

今度は逆にブラウザ上で編集した.ipynbファイルをVSCodeで開く

下図のように編集してみます。
ついでにMarkdown形式のコメントも追加しました。
ちなみにmatplotlibでグラフ表示している箇所で1番目のセルで定義された変数xを使用していますが、先程の手順でjupyter notebookコマンドを実行して開いた場合は一旦1番目のセルを実行しなければ変数が定義されないためエラーとなって表示されません。
一方、通知から開いた場合はVSCodeで起動済みのものにアクセスするため、変数も全て定義済みの状態で操作できます。

9-1.png

上書き保存したtest.ipynbをVSCodeで開こうとすると「Pythonコードにインポートしますか?」と右下に表示されるのでImportをクリックします。
表示されない場合はファイルを右クリックし、「Import Jupyter Notebook」をクリックして下さい。

9-2.png

すると下図の左側のように新たなファイルが生成されます。
Run All Cellsをクリックすれば右側のようにきちんと表示されます。
またMarkdown形式のコメントは先頭に#%% [markdown]を付ければいいことが分かります。

9-3.png

ちなみにグラフの軸の数字が見えないのは黒系のテーマを使用しているからで、テーマをLight(Visual Studio)にすると以下のように表示されます。

9-4.png

おまけ

tqdmで進捗表示させようと思ったのですが更新毎に新たな行に表示されてしまいました。
tqdm_notebookの方は表示すら不可能でした。

ext.png

まとめ

.pyファイルをVSCode上で実行して出力を確認
.ipynb形式で保存
⇒ブラウザ上で確認・編集して上書き
⇒再度VSCode上で開く

という作業が行えることを確認できました。
これでVSCodeの強力な拡張機能を利用してJupyter Notebookの編集が行えますね。