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 预览等 较弱
推荐使用 ✅(轻量时也很方便)
相关推荐
leoZ2316 小时前
记忆系统与 Agent 定制完全指南(四):自定义 Agent 开发(一)
前端·chrome
leoZ2317 小时前
记忆系统与 Agent 定制完全指南(三):记忆的检索与使用
前端·chrome
groundhappy9 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕9 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫10 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生11 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.1112 小时前
linux基础IO
linux·运维·服务器
BelongPanda14 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯14 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_7779983414 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器