VSCode Dev ContainersでJupyter実行環境を作ろう
はじめに
機械学習の勉強を始めようと思って、色々調べてみると、Jupyter を使って分析等を行うといいということがわかりました。
しかし、「ローカル環境に Python + Jupyter 環境を構築するのもなぁ...」ということで、Visual Studio Code Dev Containers を使って Jupyter 実行環境を作ってみました。
本記事では Poetry を使って Python のパッケージ管理を行いますが、お好きなパッケージ管理ツールを使っても構いません。
また、Jupyter の実行は VS Code の Jupyter 拡張機能を使い、VS Code エディタ上で操作します。
VS Code での Jupyter 操作については、こちらを参考にしてください。
なぜ VS Code の Jupyter 拡張機能を使うのか気になる方はどうぞ...
VS Code 上で Jupyter を操作することで
- ファイル保存時にフォーマッティングさせる
- GitHub Copilot のアシスタントを効かせる
が今回の構築を作るに至った目的です。
ブラウザ版 Jupyter Notebook を使ったことがないので、これらがブラウザ版で使用できる場合はコメントいただければ嬉しいです。
環境
- Visual Studio Code
- Docker
手順
1. Dockerfile の作成
今回は以下の Dockerfile を使用します。
今回の Jupyter 環境はセキュリティ等の考慮は行っていませんので、あしからず...。
FROM python:3.12-slim
RUN apt-get update &&\
apt-get -y install locales curl &&\
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm
RUN pip install --upgrade pip
RUN curl -sSL https://install.python-poetry.org | python -
ENV PATH /root/.local/bin:$PATH
2. devcontainer.json の作成
次に、VS Code で使用する devcontainer.json
を作成します。
作業ディレクトリ下に .devcontainer
ディレクトリを作成し、その中に devcontainer.json
を作成します。
devcontainer.json
の例を以下に記載しますので、参考にしてください。
{
"name": "vscode-devcontainer-jupyter-example",
"build": {
"context": "..",
"dockerfile": "../Dockerfile"
},
"features": {
"ghcr.io/devcontainers/features/python:1": {}
},
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"charliermarsh.ruff",
"ms-toolsai.jupyter"
]
}
}
}
今回、コンテナ内にインストールする拡張機能は
です。
Ruffは Rust で書かれた Python のリンター・コードフォーマッタです。
今回は Ruff を使用して、保存時にフォーマッティングを行ってもらうため、拡張機能も追加しています。
上記の拡張機能をコンテナ内にインストールするためにcustomizations
の vscode
の extensions
に記載します。
これらに加えて、Pylanceを入れるとよいかもしれません。
3. コンテナの起動
VS Code で作業ディレクトリを開き、左下の ><
マークをクリックし、コンテナーで再度開く
を選択します。
すると、ビルドが始まり、ビルドに成功するとコンテナが起動し、VS Code がコンテナ内で開かれます。
4. プロジェクトの作成
今回は Poetry を使用しているので、以下のコマンドでプロジェクトを作成します。
poetry new my_project
my_project
の部分は好きなプロジェクト名に変更してください。
5. パッケージのインストール
pyproject.toml
があるプロジェクトディレクトリに移動し、以下のコマンドでパッケージをインストールします。
poetry add ipykernel ruff
ipykernel は IPython カーネルの一部で、Jupyter と Python の間の通信を可能にするコンポーネントです。
VS Code の Jupyter 拡張機能を使うためには ipykernel が必要なため、インストールします。
ruff も合わせてインストールしておきます。
ruff のインストールが成功したら、jupyter notebook ファイルをフォーマットできるようにpyproject.toml
に以下を追記してください。
[tool.ruff]
extend-include = ["*.ipynb"]
.vscode/settings.json
の作成
6. 次に、.vscode/settings.json
を作成します。
以下を参照ください。
{
"python.analysis.extraPaths": [
"/root/.cache/pypoetry/virtualenvs/foo-py3.12/lib/python3.12/site-packages"
],
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnType": true,
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
},
"notebook.formatOnSave.enabled": true,
"notebook.codeActionsOnSave": {
"source.fixAll.ruff": true,
"source.organizeImports.ruff": true
},
"editor.formatOnSave": true
}
python.analysis.extraPaths
には、Poetry で作成した仮想環境のパスを記載します。
詳しい設定については私の記事で恐縮ですが、こちらを参照してください。
ファイル保存時にフォーマットを行うように設定を行っておきます。
[python]
内のeditor.defaultFormatter
は Ruff に指定しておきます。
notebook.formatOnSave.enabled
はtrue
にし、 Jupyter で保存時にフォーマットを行うように設定します。
notebook.codeActionsOnSave
にて、保存時に lint 違反を自動的に修正し、インポートを整理するように設定しておきます。
ここまでできたら、VS Code を再読み込みしてください。
Windows の場合、command + shift + p
でコマンドパレットを開き、Reload Window
を選択することで再読み込みができます。
7. Jupyter ファイルの作成&実行
それでは Jupyter ファイルを作成してみましょう。
コマンドパレットを開き、Create: New Jupyter Notebook
を選択し、新しい Jupyter ファイルを作成します。
適当にhello world
でも出力してみましょう。
以下のコードを入力して、alt + enter
でセルを実行してみてください。
print("hello world")
その際にカーネルを選択する画面が出るかと思います。
仮想環境をインタープリタとして選択してください。
この際に、仮想環境ではないインタープリタを選択すると、実行時に ipykernel がないと怒られので、注意してください。
それではあらためてセルを実行してみてください。
以下が出れば成功です!
以上で環境構築は修了です。
おわりに
VS Code Dev Containers を使って、Jupyter 実行環墋を構築してみました。
まだまだ Jupyter の使い方等はわかっていないので、勉強していきたいと思います。
この記事が少しでもお役に立てば幸いです。
Discussion