◀ 3.

Jupyter Notebookが起動しない|環境・ポート・認証・カーネルの確認

先に切り分ける:サーバー・画面・カーネル

「Jupyterが起動しない」は、コマンドが見つからない、サーバーが停止する、URL/認証/画面表示の問題、カーネルだけの失敗に分けて調べます。画面が開かないだけで再インストールや認証解除を行いません。端末のログ、利用Python、対象版と実ポートを先に確認します。

Jupyterの実行環境、実ポートと認証、カーネルの3段階を分ける図

同じPython環境に何が入っているか

次はパッケージのmetadataを読むだけの例です。nullは「このPython環境では見つからない」の意味で、PC全体の未導入を証明しません。実行パスや環境名には個人情報が含まれる場合があるため、共有時は必要部分だけ残します。メタパッケージjupyterの有無とnotebook/server/kernelの有無も別です。

import json
from importlib import metadata
import sys

packages = {}
for name in ('notebook', 'jupyter_server', 'jupyter_core', 'ipykernel'):
    try:
        packages[name] = metadata.version(name)
    except metadata.PackageNotFoundError:
        packages[name] = None
print(json.dumps({'python': sys.version.split()[0], 'executable': sys.executable,
                  'packages': packages}, ensure_ascii=False, indent=2))

同じPythonを指定したpython -m pip show notebook jupyter_server ipykernelやpython -m pip checkも手掛かりです。pip checkの成功は全設定/拡張の互換性保証ではなく、更新が必要な場合も対象環境/制約/復元手段を確認してから行います。conda管理環境へ無条件にpip更新を重ねません。

ローカル限定でログを確認する起動例

Notebook7用の次の例は、認証設定を変更せず127.0.0.1で起動し、ブラウザを自動で開きません。既定8888が使用中なら別ポートを自動試行せず失敗します。python start-local.py --port 8889のように利用可能なポートを選ぶか、通常の自動再試行を使うかを区別します。これは既存設定の安全性を監査するプログラムではありません。以前に認証を無効化した設定がある場合は、その状態を引き継ぎ得るので設定/認証を管理者と確認してください。

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--port', type=int, default=8888)
args = parser.parse_args()
if not 1 <= args.port <= 65535:
    parser.error('port must be between 1 and 65535')

from notebook.app import main

main(argv=['--no-browser', '--ip=127.0.0.1', f'--port={args.port}',
           '--ServerApp.port_retries=0'])

専用の空設定ディレクトリのNotebook7.6.3/Server2.21.1検体では、サーバー起動後も認証なし/誤tokenのAPI読取は403、正tokenは200でした。占有した検体ポートでは起動失敗となり、先に占有したプロセスは終了されませんでした。ログ/一覧から実際のポートと認証方式を読み、自動的に8888固定でアクセスしないでください。

安全な確認順

症状先に確認すること
command not found同じPythonとlauncherの配置/PATH。未導入と別環境を区別
port in use起動失敗か別ポートへ継続したかを実ログで確認。未知のPIDをkillしない
ブラウザだけ開かない起動済みの実URL/ポートとサーバーが存続しているかを確認
認証できないそのサーバーの現行token/password/cookieを確認。認証を空にしない
画面は開くがkernel失敗選択kernelとkernel.jsonの実行Python/存在を確認。削除/再登録は別判断
ImportError対象Python/依存版/tracebackの必要箇所。全更新や固定downgradeを先に行わない

tokenと旧ログを扱うとき

Jupyterへの接続はコード実行につながります。token付きURL、server listの全文、設定/tracebackの秘密値を公開しません。tokenがURLにない場合も、password方式か認証停止か等を確認し、見た目だけで安全と判断しません。認証を止める旧例は「開発用」なら安全という意味ではなく、起動不良の通常対処として使いません。

元記事の色付きログは、8888/8889競合後に8890で起動した流れが有用なので復元します。Python3.6/NotebookApp/JupyterLab beta等は当時の記録であり、現行の出力保証ではありません。当時のtoken値は新版本文では伏せ、URL中のtoken重複も再現手順として推奨しません。元版本文は履歴として保持します。

新版本文の伏字化だけでは、既に共有された認証情報の失効にはなりません。有効なtokenを共有した場合は、所有者が影響/保存状態と正規の停止・再発行手順を確認します。旧tokenが現在も有効かどうかを、この記事から断定するものではありません。

Notebook7と旧Classic、SSH、kernelは別に判断する

Notebook7はJupyter Server/JupyterLab系の構成で、旧ClassicのNotebookApp設定や拡張をそのまま共通仕様にしません。JupyterLabへの移行は任意で、起動不良の必須対処ではありません。SSH転送は待受/経路/認証と別であり、remoteのlocalhostを自分のPCのlocalhostと混同しません。今回の検体は本番SSH、実ブラウザ/拡張、conda/OS別kernelの修復やセル実行の確認ではありません。

基本操作は実親Jupyter Notebook、同じ親のLinux/Macのインストールと起動とWindowsの起動も対象版を確認して参照してください。既存の10309はAnaconda配下のWindowsインストールです。Anaconda自体の導入と、選択した環境にJupyterがあるかの確認を分けて参照します。

既存のパターン別資料

この記事の要点
  • Jupyter Notebook が起動しない主な原因: インストール不完全 / ポート競合 / 認証トークン問題 / ブラウザ非起動
  • 対処の前に、同じPython環境のnotebook/server/kernel・版を確認
  • 対処 ②: jupyter notebook --port 8889 で別ポート
  • 対処 ③: jupyter notebook list で実行中インスタンスとトークン確認
  • Labへの移行は任意。起動不良の確認だけのために別製品/依存を追加しない

 

パターン別の対処

パターン 1: コマンドが見つからない

旧例の注意:shellの表示例です。command not foundだけでPC全体の未導入と断定せず、同じPython/launcher/PATHを確認します。

$ jupyter notebook
bash: jupyter: command not found

原因候補: 未導入/別Python環境/PATHやlauncherの不整合等。ログと対象環境を確認

旧例の注意:pip showは未導入時に警告/非0終了となり得ます。pip/condaの対象を分け、全更新/再導入を自動実行しません。

# 確認
$ pip show jupyter
# 未インストールなら出力なし

# インストール
$ pip install --upgrade jupyter

# Anaconda 環境なら
$ conda install jupyter

# パス確認
$ which jupyter  # Linux/Mac
$ where jupyter  # Windows

パターン 2: ポートが使用中

旧例の注意:出力例で、8888が使用中でも別ポートでサーバーが起動する場合があります。実ログのポート/起動成否を確認します。

$ jupyter notebook
[I] 8888 already in use, trying another port
[I] Jupyter Notebook is running at: http://localhost:8889/

別のプロセスが 8888 を使用中。対処:

旧例の注意:別ポート指定と他プロセスの強制終了は別です。未知のPIDへのkill -9は行わず、保存状態/所有者/正常終了手順を確認します。

# 別ポートで起動
$ jupyter notebook --port 8889

# 占有プロセスを確認
$ lsof -i :8888    # Linux/Mac
$ netstat -ano | findstr :8888  # Windows

# プロセスを終了
$ kill -9 <PID>

パターン 3: ブラウザが自動で開かない

旧例の注意:token付きURLは認証情報です。共有/公開せず、ログの実URLを自分のブラウザだけで使います。browser名/設定はOS/版で異なります。

# ターミナルに表示される URL をコピーしてブラウザに貼り付け
[I] http://localhost:8888/?token=abc123def456...

# またはブラウザ起動を抑止して URL だけ確認
$ jupyter notebook --no-browser

# デフォルトブラウザを指定
$ jupyter notebook --browser=chrome

パターン 4: 認証トークンエラー

古い URL を使ったり、別のターミナルで起動した Jupyter にアクセスしようとした場合:

旧例の注意:token/passwordを空にする行は通常の対処として実行しません。「開発用のみ」でも保護の代わりになりません。ClassicとServer2の認証設定/CLIを区別します。

# 現在実行中の Jupyter インスタンスとトークンを確認
$ jupyter notebook list
Currently running servers:
http://localhost:8888/?token=abc123def456... :: /home/user

# トークンを無効化して起動(開発用のみ)
$ jupyter notebook --NotebookApp.token='' --NotebookApp.password=''

# パスワード方式に切替
$ jupyter notebook password
Enter password: ****
Verify password: ****

パターン 5: カーネルエラー(Dead kernel)

起動はするがコード実行時に「カーネルが死にました」と出る:

旧例の注意:kernelの再インストール/登録/削除は読取確認ではありません。kernel.jsonの実行先/対象環境を先に調べ、既存kernelspecを削除しません。

# Python カーネルを再インストール
$ python -m ipykernel install --user

# 利用可能カーネル確認
$ jupyter kernelspec list

# カーネル削除+再追加
$ jupyter kernelspec uninstall python3
$ python -m ipykernel install --user --name=python3

パターン 6: 依存関係エラー

旧例の注意:特定ImportErrorの例であり、markupsafeの固定downgradeや全依存更新を定型実行しません。対象版/制約/tracebackと復元手段を確認します。

# よくあるエラー
ImportError: cannot import name 'soft_unicode' from 'markupsafe'

# 対処: markupsafe をダウングレード
$ pip install markupsafe==2.0.1

# またはまとめて更新
$ pip install --upgrade jupyter notebook ipython markupsafe

パターン 7: Windows で文字化け・パスエラー

旧例の注意:日本語パスだけを原因と断定せず、cmd/PowerShellや設定の対象も分けます。DATA_DIR変更はruntime/config/kernelの全移行ではありません。

# 日本語ユーザー名のパスでエラーが出ることがある
# C:\Users\田中\... → 英数字パスに変更
$ set JUPYTER_DATA_DIR=C:\jupyter_data
$ jupyter notebook

JupyterLab への移行(任意)

旧Classic、Notebook7、Jupyter Server、JupyterLabを区別します。Notebook7もJupyterLab/Jupyter Serverに基づく構成で、Lab移行を起動失敗の必須対処にしません。

旧例の注意:Labの導入は任意で、認証/拡張/環境の互換確認とは別です。Notebook起動不良の自動修復として依存を追加しません。

$ pip install jupyterlab
$ jupyter lab

# ブラウザで http://localhost:8888/lab が開く

メリット:

  • タブ式 UI で複数ノートを並列表示
  • ターミナル・ファイルブラウザ統合
  • 拡張機能エコシステム
  • Notebook (Classic) も併用可能

Anaconda 環境での Jupyter

旧例の注意:conda環境とpipの対象、user kernelspecの保存先/同名上書きを確認します。登録を確認の前提にしません。

# Anaconda Navigator で起動
# または
$ conda activate myenv
$ jupyter notebook

# 仮想環境のカーネルを追加
$ conda activate myenv
$ pip install ipykernel
$ python -m ipykernel install --user --name=myenv --display-name="Python (myenv)"

SSH 越しのリモート Jupyter

サーバ側で起動した Jupyter にローカルブラウザからアクセス:

旧例の注意:サーバー側とローカル側のlocalhostは別です。待受/実ポート/転送/認証を確認し、SSH転送だけで保護や画面表示を保証しません。

# サーバ側(リモート)
$ jupyter notebook --no-browser --port 8888

# ローカル側(SSH ポートフォワーディング)
$ ssh -L 8888:localhost:8888 user@remote-server

# ローカルブラウザで http://localhost:8888 を開く

関連記事

元の書式付き資料

元例の注意:Python3.6/旧NotebookAppの当時のログです。8888/8889競合後に8890で起動した順序を保持しますが、現行版の出力保証ではありません。当時のtokenは省略し、二重token URLも再利用しません。

$ jupyter notebook
[I 22:56:29.080 NotebookApp] The port 8888 is already in use, trying another port.
[I 22:56:29.081 NotebookApp] The port 8889 is already in use, trying another port.
[I 22:56:29.112 NotebookApp] JupyterLab beta preview extension loaded from /home/ ... /anaconda3/lib/python3.6/site-packages/jupyterlab
[I 22:56:29.112 NotebookApp] JupyterLab application directory is /home/ ... /anaconda3/share/jupyter/lab
[I 22:56:29.117 NotebookApp] Serving notebooks from local directory: /home/ ...
[I 22:56:29.117 NotebookApp] 0 active kernels
[I 22:56:29.117 NotebookApp] The Jupyter Notebook is running at:
[I 22:56:29.117 NotebookApp] http://localhost:8890/?token=REDACTED
[I 22:56:29.117 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 22:56:29.119 NotebookApp] 
    
    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
       
http://localhost:8890/?token=REDACTED&token=REDACTED
ATTENTION: default value of option force_s3tc_enable overridden by environment.
既存のブラウザ セッションに新しいウィンドウが作成されました。
[I 22:56:54.597 NotebookApp] 302 GET /?token=REDACTED (127.0.0.1) 0.87ms
[I 23:01:02.235 NotebookApp] 302 GET /?token=REDACTED&token=REDACTED (127.0.0.1) 0.59ms

確認範囲と一次資料

Python3.12.10と専用venvのNotebook7.6.3/Server2.21.1、空設定/専用rootのローカル検体で確認した範囲です。本番や利用者の設定/保存済みnotebook・kernel・認証を変更していません。全版/全拡張/実ブラウザ・SSH/conda/全OS・実際のkernel修復やセル実行の保証ではありません。

子ページ

子ページはありません

同階層のページ
  1. インストールと起動方法(Linux, Mac)
  2. 起動方法(Windows)
  3. Jupyter Notebookが起動しない場合の対処方法

最近更新/作成されたページ