とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

VSCodeでJupyter Notebookを使う

少々開発関係の話からはそれますが、Visual Studio Code(以下VSCode)でJupyter Notebookを使う方法を今回まとめてみます。 macOSでの環境構築についてまとめていますが、環境固有の情報はPython 3のセットアップのところだけで、あとはVSCode上での話なので、他のOSでも同様に動かしてみることができると思います。参考になれば幸いです。

Python3をインストール

まずはmacOSにPython3をインストールします。最終的に動かしたいアプリの要件にあったPython3をインストールすればよいでしょう。現在MacはARMベースのApple Silicon(M1,M2..)アーキテクチャーとIntel CPU(amd64)アーキテクチャーに対応しています。

Python 3.9以降はどちらのアーキテクチャーにも対応しています。VSCodeのコマンドラインツール14.0に含まれるPython3はPython3.9なので、対応したものが組み込まれています。それより古いPythonやPythonのモジュールの一部はApple Siliconに非対応のものもまれにあるのでご注意ください(バージョン13.2はPython3.8.9だったので、よく使うnumpyとかが動きませんでした)。調べてちょっと使った感じでは、Python3.9以降を使えば困ることはなさそうです。

XCodeをアップグレードできない場合は、HomebrewやPython公式のインストーラーなどでPython3.9以降をインストールしてください。以下、Python3.9でのみ動作確認しています。

XCode及びコマンドラインツールを入れる方法

次を実行するとメッセージが現れるので、「Xcodeコマンドラインツール」をメッセージに従ってインストールします。

% xcode-select --install

コマンドラインツールを入れると、Python 3.9.6がインストールされます(2022/09/30 14:00現在)。

% python3 --version
Python 3.9.6

Python3のインストーラーを使ってインストールする

Python.orgからPython3をダウンロードします。 インストーラーを実行してインストールします。

Homebrewを使ってインストールする

Homebrewを利用している場合は、次のような感じでインストールできます。

$ brew install python@3.9

VSCodeのセットアップ

VSCode自体はダウンロードしてインストール済み前提とします。まだインストールしていない場合は公式サイトからダウンロードして、インストールします。

VSCodeでPython3のパスを設定

Homebrewを利用している場合は、XCodeのコマンドラインツールもインストールしていると思います。 公式サイトからPython3をダウンロードしてインストールした場合も、他の開発で他のツールが別のバージョンのPythonをインストールしているかもしれません。

VSCodeがデフォルトで利用するPython3をVSCodeの設定を開き、python.defaultInterpreterPathで指定します。

VSCodeにPythonとJupyter拡張機能をインストール

VSCodeの拡張機能として、Python拡張Jupyter拡張をインストールします。 Python拡張をインストールするとJupyter拡張も一緒にインストールされるはずですが、揃っていない場合は検索してインストールします。

VSCodeで開発用のディレクトリーを開く

例えば~/working/vscode-workspaceのようなパスにディレクトリーを作成しておきます。 VSCodeで作成したパスのディレクトリーを開きます。

VSCodeで開発用のディレクトリーを開いた状態でターミナルを開く

開発用のディレクトリー(~/working/vscode-workspace)を開いた状態で、VSCodeのターミナルを開くと、そのパスをカレントディレクトリーとしてシェルが開きます。

VSCodeのターミナルでPython仮想環境を作る

次のようなコマンドをVSCode内のターミナルで実行して、Python 3の仮想環境を作成します。

% cd ~/working/vscode-workspace
% python3 -m venv .venv

複数のバージョンのPythonがシステムに入っている場合は、python3.8,python3.9のように指定したほうが良いと思います。

% python3.9 -m venv .venv

作成した仮想環境にアクセスするため、つぎを実行します。

% source .venv/bin/activate

シェルの冒頭に(.venv)がついたら、Python 3の仮想環境の作成と切り替えは成功です。

Python3のjupyterモジュールを仮想環境にインストール

仮想環境に入ると、pythonやpipコマンドでバージョンを指定しないでも目的のバージョンを利用できます。念の為確認します。

例:

% python--version
Python 3.9.6
% pip --version
pip 21.2.4 from /Users/ytooyama/working/vscode-workspace/.venv/lib/python3.9/site-packages/pip (python 3.9)

つぎのように実行して、jupyterモジュールをインストールします。

% pip install jupyter
...
Installing collected packages: jupyter
Successfully installed jupyter-1.0.0

以上で完了です。上記はApple Silicon (M1)のMacでの例です。Intel CPUのMacの場合は、違ったメッセージが出るかもしれません。 今回の例ではXCodeコマンドラインツールに含まれるPython 3.8を使いましたが、一部のPython3モジュールはApple Siliconに非対応のモジュールがあり、インストールに失敗する可能性があります。その場合はPython3.9以降のバージョンをインストールしましょう。最新のバージョンはPython3.10系のバージョンですが、利用するモジュールやプログラムがPython3.10で動くかは要確認です。

Jupyter NotebookをVSCodeで開く

コマンドパレットを開きます(表示→コマンドパレットか、Shift + ⌘ + P)。

「Create: New Jupyter Notebook」を入力してリターンキーを実行。

すると、次のようにJupyter NotebookがVSCodeで開かれます。

あとはその画面でJupyter Notebookを利用します。ログはVSCodeのいつもの方法でファイル保存できます。

print('hello jupyter notebook')

と入力して左側の「セルを実行」ボタン(▷)をクリックすると結果が表示されます。

実行したい作業に合わせてPythonモジュールをVSCodeのターミナルを使って「pip install 〜」でインストールして、Jupyter Notebookでコードを実行すると結果が表示されます。

また、右上のPythonのバージョン部分をクリックすると、環境にインストールされたPython 3と仮想環境のPython 3を切り替えられます。以降はPython 3の仮想環境上にモジュールをインストールしていくので、VSCodeの画面でも「.venv」の方のPython 3を選択しておかなければなりません。

円周率をSymPyモジュールで有効桁数100桁まで表示してみます。

import sympy
z=sympy.pi.evalf(100)
print(z)

実行するとsympyモジュールがないと言われます。

VSCodeのコンソールでモジュールをインストールします。

% pip install sympy 

もう一度実行して、結果が表示されることを確認します。

import sympy
z=sympy.pi.evalf(100)
print(z)

v 0.2s

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068

次に、NumPyを使ってみます。

import numpy as np
a = np.array([1, 2, 3])
a * 3

同様に、numpyモジュールがないと言われるのでインストールします。

% pip install numpy

もう一度実行して、結果が表示されることを確認します。

import numpy as np
a = np.array([1, 2, 3])
a * 3

v 1.6s

array([3, 6, 9])

matplotlibモジュールを使って、ちょっとしたグラフを作ってみます(当然ながらモジュールのインストールが必要)。 降雨量のデータはtime-j.netが提供する情報を使っています。

import matplotlib.pyplot as plt

month = ['1', '2', '3', '4', '5', '6','7', '8', '9', '10', '11', '12']
amount = [37.4, 43.1, 90.9, 102.3, 117.3, 142.4, 148.1, 176.3, 201.8, 164.9, 75.7, 41.1]

plt.bar(month, amount)

実行すると、グラフが出力されます。

まとめ

VSCodeの操作に慣れていれば文書書きやコードの実行をVSCodeで一括して行えるので、便利なのかなと思います。 VSCodeのJupyter拡張では、文書に対してPythonのコードとMarkdown形式のデータを入力できます。