Linux 下安装和使用 Jupyter Notebook

Jupyter Notebook / Lab 是 Python 开发和数据分析中不可或缺的工具。为了避免环境污染,推荐使用虚拟环境方式安装并启动它。本教程将教你如何:

  • 安装 Python、pip、venv
  • 使用虚拟环境安装 Jupyter
  • 汉化
  • 安装实用插件
  • 设置登录密码
  • 启动并远程访问
  • 编写一个一键启动脚本,分享给他人使用

⭐️ 一、安装 Python 及相关依赖

在终端执行以下命令:

bash 复制代码
sudo apt update
sudo apt install python3 python3-pip python3-venv -y

验证是否安装成功:

bash 复制代码
python3 --version
pip3 --version

⭐️ 二、创建虚拟环境并安装 Jupyter

为了避免污染系统环境,我们使用 venv 创建一个独立环境:

bash 复制代码
mkdir -p ~/venvs
python3 -m venv ~/venvs/jupyter_env

激活虚拟环境:

bash 复制代码
source ~/venvs/jupyter_env/bin/activate

安装 JupyterLab(包含 Notebook):

bash 复制代码
pip install --upgrade pip
pip install jupyterlab

退出虚拟环境

bash 复制代码
deactivate

⭐️ 三、JupyterLab 界面汉化

1. 安装汉化语言包 (JupyterLab >= 4.x)

bash 复制代码
pip install jupyterlab-language-pack-zh-CN

2. 设置环境变量 (zh-CN)

bash 复制代码
export JUPYTERLAB_LANG=zh-CN

或者按需加入到 ~/.bashrc 或 ~/.zshrc 中:

bash 复制代码
echo 'export JUPYTERLAB_LANG=zh-CN' >> ~/.bashrc
source ~/.bashrc

3. 重启 JupyterLab

bash 复制代码
jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root

4. 浏览器中切换语言 (可选)

获取文件后,点击菜单:

设置 → 语言 → 中文 (简体,中国)


⭐️ 四、安装实用插件

重要:确保已安装 nodejs

bash 复制代码
node -v
npm -v

如果未安装:

bash 复制代码
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

1. Python LSP 补全(以下已启用 jupyterlab-lsp)

bash 复制代码
pip install python-lsp-server

2. 多语言补全 (JS/HTML/Markdown/Bash)

bash 复制代码
npm install -g \
  typescript typescript-language-server \
  vscode-langservers-extracted \
  markdown-language-server \
  bash-language-server

3. 变量查看器

bash 复制代码
pip install lckr-jupyterlab-variableinspector

4. Git UI 控制面板

bash 复制代码
pip install jupyterlab-git

5. 系统监控面板

bash 复制代码
pip install jupyterlab-system-monitor

6. 数据分析基础库

bash 复制代码
pip install pandas numpy matplotlib seaborn plotly openpyxl

⭐️ 五、设置 Jupyter 登录密码(可不设置)

首次设置密码:

bash 复制代码
jupyter notebook password

系统会提示你输入两次密码,然后将加密后的密码保存到:

bash 复制代码
~/.jupyter/jupyter_notebook_config.json

⭐️ 六、启动 Jupyter Notebook(远程推荐方式)

推荐在服务器、WSL 等环境中使用如下启动方式:

bash 复制代码
jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser

bash 复制代码
jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root

📋 参数说明表

参数 含义说明
jupyter lab 启动 JupyterLab(现代 Web 界面)
--ip=0.0.0.0 监听所有网络接口(允许远程访问)
--port=8888 指定端口号(默认 8888,可改为其他如 8889、8890)
--no-browser 启动时不自动打开本地浏览器(服务器/WSL 场景常用)
--allow-root 允许以 root 用户身份运行(⚠️ 安全考虑下不推荐,调试可用)

然后在浏览器访问:

复制代码
http://<你的服务器IP>:8888

输入 token 或设置的密码即可访问。

PS:token 可以在启动服务的终端获取。


⭐️ 七、修改密码

只需重新运行以下命令即可修改:

bash 复制代码
jupyter notebook password

⭐️ 八、一键安装与启动脚本(推荐)

下面是一个自动化脚本,它会:

  • 安装 Python、pip、venv(如果未安装)
  • 创建虚拟环境并激活
  • 安装 JupyterLab
  • 设置登录密码(首次运行)
  • 启动 Notebook 服务

📜 start_jupyter.sh

bash 复制代码
#!/bin/bash

# 添加临时代理
# export https_proxy=http://127.0.0.1:7890
# export http_proxy=http://127.0.0.1:7890

# 颜色输出
green() { echo -e "\\033[32m$1\\033[0m"; }
yellow() { echo -e "\\033[33m$1\\033[0m"; }

# 配置路径
VENV_DIR="$HOME/venvs/jupyter_env"
PROJECT_DIR="$HOME/workstation/notebooks"

# 检查系统类型并设置包管理器
if [ -f /etc/os-release ]; then
  . /etc/os-release
  case "$ID" in
    ubuntu|debian)
      INSTALLER="sudo apt install -y"
      UPDATE="sudo apt update"
      PY_PKGS="python3 python3-pip python3-venv"
      ;;
    arch|manjaro)
      INSTALLER="sudo pacman -S --noconfirm"
      UPDATE="sudo pacman -Sy"
      PY_PKGS="python python-pip python-virtualenv"
      ;;
    fedora)
      INSTALLER="sudo dnf install -y"
      UPDATE="sudo dnf check-update || true"
      PY_PKGS="python3 python3-pip python3-virtualenv"
      ;;
    centos|rhel)
      INSTALLER="sudo yum install -y"
      UPDATE="sudo yum check-update || true"
      PY_PKGS="python3 python3-pip python3-virtualenv"
      ;;
    opensuse*)
      INSTALLER="sudo zypper install -y"
      UPDATE="sudo zypper refresh"
      PY_PKGS="python3 python3-pip python3-virtualenv"
      ;;
    alpine)
      INSTALLER="sudo apk add"
      UPDATE="sudo apk update"
      PY_PKGS="python3 py3-pip py3-virtualenv"
      ;;
    *)
      echo "❌ 不支持的发行版($ID),请手动安装 Python3、pip 和 venv"
      exit 1
      ;;
  esac
else
  echo "❌ 无法识别系统类型,缺少 /etc/os-release"
  exit 1
fi

# 更新并安装依赖(仅安装缺失组件)
echo "🔧 检查并安装缺失依赖..."
MISSING_PKGS=()
for pkg in $PY_PKGS; do
  if ! command -v $(echo "$pkg" | cut -d'-' -f1) &>/dev/null; then
    MISSING_PKGS+=("$pkg")
  fi
done

if [ ${#MISSING_PKGS[@]} -gt 0 ]; then
  echo "📦 需要安装: ${MISSING_PKGS[*]}"
  $UPDATE
  $INSTALLER ${MISSING_PKGS[*]}
else
  echo "✅ 所有依赖已安装,跳过安装步骤。"
fi

# 确保系统已安装 nodejs(用于构建 JupyterLab)
if ! command -v node &>/dev/null; then
  echo "🔧 系统未检测到 nodejs,正在安装..."
  if command -v apt &>/dev/null; then
    sudo apt update && sudo apt install -y nodejs npm
  elif command -v dnf &>/dev/null; then
    sudo dnf install -y nodejs
  elif command -v pacman &>/dev/null; then
    sudo pacman -Sy nodejs npm --noconfirm
  else
    echo "❌ 无法自动安装 nodejs,请手动安装后重试"
    exit 1
  fi
fi

# 创建项目目录(如不存在)
if [ ! -d "$PROJECT_DIR" ]; then
  echo "📁 创建项目目录:$PROJECT_DIR"
  mkdir -p "$PROJECT_DIR"
fi

# 创建虚拟环境
if [ ! -d "$VENV_DIR" ]; then
    echo "⚙️ 正在创建虚拟环境..."
    mkdir -p "$VENV_DIR"
    python3 -m venv "$VENV_DIR"
fi

# 激活虚拟环境
source "$VENV_DIR/bin/activate"

# 安装 Jupyter
if ! command -v jupyter &> /dev/null; then
    echo "📦 正在安装 jupyterlab..."
    pip install --upgrade pip
    pip install jupyterlab
fi

echo "📦 检查 jupyter lab 是否已安装..."
if ! command -v jupyter-lab &> /dev/null; then
  echo "❌ 未找到 jupyter lab,请先安装"
  exit 1
fi

VERSION=$(jupyter lab --version | cut -d. -f1)
echo "🔍 当前 JupyterLab 主版本为:$VERSION.x"

# 设置语言环境变量
echo "🌐 配置环境变量..."
echo "export JUPYTERLAB_LANG=zh-CN"
export JUPYTERLAB_LANG=zh-CN

# 对于 4.x 安装 pip 包
if [[ "$VERSION" -ge 4 ]]; then
  echo "💡 安装适用于 JupyterLab 4.x 的中文语言包..."
  pip show jupyterlab-language-pack-zh-CN &> /dev/null
  if [[ $? -ne 0 ]]; then
    pip install jupyterlab-language-pack-zh-CN
  else
    echo "✅ 已安装 jupyterlab-language-pack-zh-CN,跳过"
  fi

# 对于 3.x 安装 labextension 扩展
elif [[ "$VERSION" -eq 3 ]]; then
  echo "💡 安装适用于 JupyterLab 3.x 的中文扩展..."
  jupyter labextension list | grep '@jupyterlab/translation-zh-CN' &> /dev/null
  if [[ $? -ne 0 ]]; then
    jupyter labextension install @jupyterlab/translation-zh-CN
  else
    echo "✅ 已安装 @jupyterlab/translation-zh-CN,跳过"
  fi

else
  echo "⚠️ 当前版本暂未支持自动识别,手动安装语言包吧"
fi

# pip 插件列表(格式:模块名)
PIP_PACKAGES=(
  jupyterlab-git
  jupyterlab-system-monitor
  lckr-jupyterlab-variableinspector
  python-lsp-server
  pandas
  numpy
  matplotlib
  seaborn
  plotly
)

# npm 插件(多语言补全)
NPM_PACKAGES=(
  typescript
  typescript-language-server
  vscode-langservers-extracted
  markdown-language-server
  bash-language-server
)

echo "🔧 开始检查并安装 pip 插件..."
for pkg in "${PIP_PACKAGES[@]}"; do
  pip show "$pkg" &> /dev/null
  if [[ $? -eq 0 ]]; then
    green "✅ $pkg 已安装,跳过"
  else
    yellow "📦 安装 $pkg ..."
    pip install "$pkg"
  fi
done

echo ""
echo "🧠 开始检查并安装 npm 语言补全支持..."
for npm_pkg in "${NPM_PACKAGES[@]}"; do
  if npm list -g --depth=0 "$npm_pkg" &> /dev/null; then
    green "✅ $npm_pkg 已全局安装"
  else
    yellow "📦 安装 $npm_pkg ..."
    npm install -g "$npm_pkg"
  fi
done

echo ""
green "✅ 所有插件检查完毕,JupyterLab 插件环境已准备完成!"

# 在虚拟环境中安装 node/npm
# if ! command -v node &>/dev/null; then
#   echo "🔧 正在为虚拟环境安装 nodejs..."
#   pip install nodejs
# fi

# 智能检测是否需要构建 JupyterLab(如未构建或有插件更新)
if ! jupyter lab build --dev-build=False --minimize=False --check &>/dev/null; then
  echo "🛠️ JupyterLab 正在构建前端资源..."

  # 优先尝试一次轻量构建
  jupyter lab build --dev-build=False --minimize=False || {

    echo '⚠️ 构建失败,尝试最小化配置重试(关闭 dev/minimize)...'

    # fallback:使用 config.py 设置构建配置(永久生效)
    JUPYTER_CONFIG_DIR=$(jupyter --config-dir)
    mkdir -p "$JUPYTER_CONFIG_DIR"
    cat <<EOF > "$JUPYTER_CONFIG_DIR/jupyter_config.py"
# 自动生成:禁用 dev/minimize 构建以避免内存问题
c.LabBuildApp.minimize = False
c.LabBuildApp.dev_build = False
EOF

    echo "✅ 写入 Jupyter 配置成功:" "$JUPYTER_CONFIG_DIR/jupyter_config.py"

    # 再次尝试构建
    jupyter lab build || echo '❌ 二次构建依然失败,请检查内存或手动构建'
  }
fi

# 设置密码(如未设置)
# CONFIG_JSON="$HOME/.jupyter/jupyter_notebook_config.json"
# if [ ! -f "$CONFIG_JSON" ]; then
#     echo "🔐 第一次使用,请设置登录密码:"
#     jupyter notebook password
# fi

# 启动 Jupyter
cd "$PROJECT_DIR"
echo "🚀 启动 Jupyter Notebook..."
if command -v jupyter-notebook &>/dev/null; then
  jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --allow-root --NotebookApp.notebook_dir="$PROJECT_DIR"
else
  jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root --ServerApp.root_dir="$PROJECT_DIR"
fi

📆 使用方法

  1. 保存为 start_jupyter.sh

  2. 赋予可执行权限:

    bash 复制代码
    chmod +x start_jupyter.sh
  3. 启动:

    bash 复制代码
    ./start_jupyter.sh


PS:因为服务器配置内存只有 2G ,所以构建失败,但是不影响使用。


⭐️ 九、总结

步骤 命令或说明
安装 Python + pip sudo apt install python3-pip
创建虚拟环境 python3 -m venv ~/venvs/xxx
安装 Jupyter pip install jupyterlab
设置密码 jupyter notebook password
启动 Notebook jupyter notebook --ip=0.0.0.0
快捷启动 使用上面脚本

🧪 附:JupyterLab vs Notebook 简单对比

对比点 JupyterLab Jupyter Notebook
界面 多标签页、现代化 单页、传统
插件系统 更强,支持终端、Git、Markdown 预览等 较弱
推荐使用 ✅(轻量时也很方便)
相关推荐
李迟4 分钟前
跨系统平台实践:在内网自建kylin服务版系统yum源
linux
odoo-卜永29 分钟前
ubuntu22.04连接爱普生打印机型号L385
linux·经验分享·ubuntu
小麦嵌入式1 小时前
Linux驱动开发实战(十一):GPIO子系统深度解析与RGB LED驱动实践
linux·c语言·驱动开发·stm32·嵌入式硬件·物联网·ubuntu
刘若水1 小时前
Linux: 进程信号初识
linux·运维·服务器
共享家95273 小时前
深入剖析Linux常用命令,助力高效操作
linux·运维·服务器
Zfox_4 小时前
【C++项目】从零实现RPC框架「四」:业务层实现与项目使用
linux·开发语言·c++·rpc·项目
吃旺旺雪饼的小男孩4 小时前
Ubuntu 22.04 安装和运行 EDK2 超详细教程
linux·运维·ubuntu
IT小馋猫4 小时前
Linux 企业项目服务器组建(附脚本)
linux·服务器·网络
阿政一号4 小时前
Linux进程间通信:【目的】【管道】【匿名管道】【命名管道】【System V 共享内存】
linux·运维·服务器·进程间通信
又过一个秋5 小时前
【sylar-webserver】7 定时器模块
linux·c++