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 预览等 较弱
推荐使用 ✅(轻量时也很方便)
相关推荐
java叶新东老师3 小时前
git stash 命令详解
linux·运维·flink
写bug的羊羊4 小时前
CentOS 9 配置国内 YUM 源
linux·运维·centos
Johny_Zhao6 小时前
CentOS Stream 9上部署FTP应用服务的两种方法(传统安装和docker-compose)
linux·网络安全·信息安全·kubernetes·云计算·containerd·ftp·yum源·系统运维
守望时空337 小时前
RustDesk搭建指南
linux
C++ 老炮儿的技术栈7 小时前
在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
linux·运维·c++·git·ubuntu·github·visual studio
白鹭8 小时前
基于LNMP架构的分布式个人博客搭建
linux·运维·服务器·网络·分布式·apache
FinAnalyzer8 小时前
如何在 InsCodeAI 上搭建并使用 Jupyter Notebook 环境?
ide·python·jupyter
java叶新东老师8 小时前
linux 部署 flink 1.15.1 并提交作业
linux·运维·flink
程序员JerrySUN9 小时前
Linux系统架构核心全景详解
linux·运维·系统架构
无敌的牛9 小时前
Linux文件理解,基础IO理解
linux·运维·服务器