問題の概要
Pythonスクリプトをターミナルから実行すると完璧に動作するのに、VS CodeのJupyter Notebookでセルの実行ボタンを押した瞬間に、すべてが動かなくなることがあります。データ視覚化や実行結果が表示される代わりに、カーネルが停止し、画面の隅に次のような通知が表示されます。
Failed to start the Kernel. The Jupyter kernel died. View Jupyter log for further details.
多くの場合、原因はコードそのものではなく、選択したPythonインタープリターとJupyterバックエンド間の通信の不具合です。これはプログラミングの問題ではなく、設定上の問題です。
根本的な原因
ほとんどの場合、クラッシュは以下の3つのいずれかに起因します:
- ipykernelの破損: PythonとJupyterの架け橋となる
ipykernelが見つからないか、現在の環境内でバイナリが破損しています。 - バージョンの不一致:
tornadoやpyzmqといった低レベルライブラリが、VS Codeの拡張機能がまだ対応していないバージョンにアップデートされています。 - 古いパス設定: 最近のアップデートにより、VS Codeが参照しているPython実行ファイルの移動、名前変更、または削除が行われています。
ステップ1:「強制」再インストール
VS Codeが ipykernel はインストール済みだと表示していても、インストールが不完全だったり、バイナリの一部が破損していたりする可能性があります。クリーンな状態で再インストールするのが、破損したバイナリの問題を排除する最も早い方法です。
まず、ターミナルで特定の環境をアクティベートします。その後、次のコマンドを実行してください:
pip install --upgrade --force-reinstall ipykernel
Condaユーザーの場合は、互換性を高めるためにconda-forgeチャネルを使用してください:
conda install -c conda-forge ipykernel --force-reinstall
インストール完了後、VS Codeを再起動してください。多くの場合、これだけでエラーは解消されます。
ステップ2:TornadoとPyzmqの競合の解決
Jupyterはネットワークに tornado を、メッセージングに pyzmq を使用しています。これらの同期が取れていないと、カーネルは開始した瞬間に終了してしまいます。これは、システム全体のアップデートによってこれらのバージョンが予期せず上がってしまうことがあるmacOSでよく見られる現象です。
これらのライブラリを、安定していることがわかっているバージョンに固定してみてください:
pip install "pyzmq<25" "tornado<6.3"
特に、pyzmq のバージョン 25.x はM1/M2チップを搭載したMacで問題を起こすことがよくあります。24.x にロールバックすることで、ノートブックとバックエンド間の通信が即座に復旧することがよくあります。
ステップ3:Jupyterログの確認
エラーメッセージの「ログを確認する」というアドバイスを無視しないでください。VS Codeで出力タブ(Ctrl+Shift+U または Cmd+Shift+U)を開き、右側のドロップダウンを Jupyter に切り替えます。
テキスト内から Traceback を探してください。特に以下の2つのヒントに注目します:
ImportError: DLL load failed: NumPyやZMQなどのC拡張が壊れています。その特定のパッケージを再インストールする必要があります。ModuleNotFoundError: No module named 'pysqlite2': LinuxやWSLでよく見られます。sudo apt install libsqlite3-devを使用して、システムレベルのヘッダーをインストールする必要があるでしょう。
ステップ4:カーネル設定の再生成
VS Codeが環境の誤ったパスをキャッシュしていることがあります。以下の「切り替え」トリックを使って、内部のマッピングを強制的にリフレッシュできます:
- ノートブックの右上に表示されているカーネル名をクリックします。
- 別のカーネルを選択 > Python環境 を選択します。
- (base環境など)全く別の環境に一旦切り替えます。
- 簡単な
print("test")セルを実行します。 - 元の環境に戻します。
この単純な入れ替えにより、VS Codeは正しいパスでカーネルのJSONファイルを書き直すよう強制されます。
ステップ5:最終手段:再構築
依存関係の問題を解決しようとして20分以上経過してしまった場合は、作業を中断してください。手動でライブラリの絡まりを解こうとするよりも、環境を削除して新しく作り直す方が効率的です。
# venvの場合
rm -rf .venv
python -m venv .venv
source .venv/bin/activate
pip install ipykernel pandas matplotlib # 必要なものだけを再インストール
# Condaの場合
conda env remove -n myenv
conda create -n myenv python=3.11 ipykernel
conda activate myenv
動作確認
以下のスニペットを実行して、カーネルが安定しており、正しいリソースを使用しているか確認します:
import sys
print(f"Status: Kernel Active")
print(f"Version: {sys.version.split()[0]}")
print(f"Path: {sys.executable}")
クラッシュのポップアップが出ずに環境のパスが表示されれば、修正は成功です。
再発防止のためのTips
ノートブックをスムーズに動作させ続けるために、2つの習慣を心がけましょう。1つ目は、他のライブラリからの「依存関係の浸食」を防ぐために、常にプロジェクトごとに専用の .venv を使用すること。2つ目は、PyTorchやTensorFlowのような、共有依存関係を特定の互換性のないバージョンに固定しがちな巨大なフレームワークを追加する前に、最初のステップとして ipykernel をインストールすることです。

