Linux 下安装和使用 Jupyter Notebook

news/2025/4/1 1:38:47/

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

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

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

在终端执行以下命令:

sudo apt update
sudo apt install python3 python3-pip python3-venv -y

验证是否安装成功:

python3 --version
pip3 --version

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

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

mkdir -p ~/venvs
python3 -m venv ~/venvs/jupyter_env

激活虚拟环境:

source ~/venvs/jupyter_env/bin/activate

安装 JupyterLab(包含 Notebook):

pip install --upgrade pip
pip install jupyterlab

退出虚拟环境

deactivate

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

首次设置密码:

jupyter notebook password

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

~/.jupyter/jupyter_notebook_config.json

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

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

jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser

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 可以在启动服务的终端获取。


⭐️ 五、修改密码

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

jupyter notebook password

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

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

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

jupytersh_130">📜 start_jupyter.sh

#!/bin/bash# 配置路径
VENV_DIR="$HOME/venvs/jupyter_env"
PROJECT_DIR="$HOME/workstation/notebooks"# 检查系统类型并设置包管理器
if [ -f /etc/os-release ]; then. /etc/os-releasecase "$ID" inubuntu|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
elseecho "❌ 无法识别系统类型,缺少 /etc/os-release"exit 1
fi# 更新并安装依赖(仅安装缺失组件)
echo "🔧 检查并安装缺失依赖..."
MISSING_PKGS=()
for pkg in $PY_PKGS; doif ! command -v $(echo "$pkg" | cut -d'-' -f1) &>/dev/null; thenMISSING_PKGS+=("$pkg")fi
doneif [ ${#MISSING_PKGS[@]} -gt 0 ]; thenecho "📦 需要安装: ${MISSING_PKGS[*]}"$UPDATE$INSTALLER ${MISSING_PKGS[*]}
elseecho "✅ 所有依赖已安装,跳过安装步骤。"
fi# 确保系统已安装 nodejs(用于构建 JupyterLab)
if ! command -v node &>/dev/null; thenecho "🔧 系统未检测到 nodejs,正在安装..."if command -v apt &>/dev/null; thensudo apt update && sudo apt install -y nodejs npmelif command -v dnf &>/dev/null; thensudo dnf install -y nodejselif command -v pacman &>/dev/null; thensudo pacman -Sy nodejs npm --noconfirmelseecho "❌ 无法自动安装 nodejs,请手动安装后重试"exit 1fi
fi# 创建项目目录(如不存在)
if [ ! -d "$PROJECT_DIR" ]; thenecho "📁 创建项目目录:$PROJECT_DIR"mkdir -p "$PROJECT_DIR"
fi# 创建虚拟环境
if [ ! -d "$VENV_DIR" ]; thenecho "⚙️ 正在创建虚拟环境..."mkdir -p "$VENV_DIR"python3 -m venv "$VENV_DIR"
fi# 激活虚拟环境
source "$VENV_DIR/bin/activate"# 安装 Jupyter
if ! command -v jupyter &> /dev/null; thenecho "📦 正在安装 jupyterlab..."pip install --upgrade pippip install jupyterlab
fiecho "📦 已安装 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; thenecho "🛠️ 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
EOFecho "✅ 写入 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; thenjupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --allow-root --NotebookApp.notebook_dir="$PROJECT_DIR"
elsejupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root --ServerApp.root_dir="$PROJECT_DIR"
fi

📆 使用方法

  1. 保存为 start_jupyter.sh
  2. 赋予可执行权限:
    chmod +x start_jupyter.sh
    
  3. 启动:
    ./start_jupyter.sh
    

在这里插入图片描述
PS:因为服务器配置内存只有 2G ,所以构建失败,但是不影响使用。


⭐️ 七、总结

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

🧪 附:JupyterLab vs Notebook 简单对比

对比点JupyterLabJupyter Notebook
界面多标签页、现代化单页、传统
插件系统更强,支持终端、Git、Markdown 预览等较弱
推荐使用✅(轻量时也很方便)

http://www.ppmy.cn/news/1583999.html

相关文章

浏览器缓存资源 service worker

效果&#xff1a;访问 图片使用浏览器本地缓存 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>通过 Service Worker 拦截和处理网络请求&#xff08;可以实现网络资源的缓存&#xff…

【Leetcode 每日一题】2716. 最小化字符串长度

问题背景 给你一个下标从 0 0 0 开始的字符串 s s s&#xff0c;重复执行下述操作 任意 次&#xff1a; 在字符串中选出一个下标 i i i&#xff0c;并使 c c c 为字符串下标 i i i 处的字符。并在 i i i 左侧&#xff08;如果有&#xff09;和 右侧&#xff08;如果有&…

Yarn下载的一些心得

&#xff08;我在解决终端不能识别yarn作为命令在网上找了好久&#xff0c;写下一点自己的心得&#xff09; 首先使用 npm instal -g yarn 来下载yarn没有错&#xff0c;但是会遇见下面的问题。 1.如果你没有下载npm &#xff0c; 那么下载nodejs来得到npm, 2.如果你使用了命…

ADZS-ICE-2000和AD-ICE2000仿真器在线升级固件

作者的话 近期发现有些兄弟的ICE-2000仿真器链接DSP报错&#xff0c;然后test第四步不通过&#xff0c;我就拿我的仿真器也试了一下&#xff0c;发现ADI悄咪咪的在线升级仿真器固件&#xff0c;有些兄弟不会操作&#xff0c;就会导致仿真器升级失败&#xff0c;连不上目标板&a…

17--华为防火墙智能选路全解:网络世界的智能导航系统

华为防火墙智能选路全解&#xff1a;网络世界的智能导航系统 开篇故事&#xff1a;快递小哥的烦恼与网络世界的相似性 想象你是个快递站站长&#xff0c;每天要处理来自全国各地的包裹。突然某天遇到&#xff1a; &#x1f69a; 双11爆仓&#xff1a;如何把包裹最快送到客户手…

VMware Ubuntu 网络配置全攻略:从断网到畅通无阻

一、网络连接模式选择&#xff08;先搞懂原理&#xff09; VMware提供三种网络模式&#xff0c;就像手机的不同网络套餐&#xff1a; 模式适用场景特点类比NAT个人上网/新手首选虚拟机共享主机IP&#xff0c;能上网但隐身家用WiFi桥接服务器/需要被局域网访问虚拟机会获得独立…

MySQL 基础查询语句参考手册

一、基本查询操作 从表中选取特定列 sql -- 从 employees 表中选取 last_name 列 SELECT last_name FROM employees;-- 从 employees 表中选取 last_name、salary、email 列 SELECT last_name, salary, email FROM employees;获取表的全部列信息 sql -- 从 jobs 表中获取所有列…

java项目之基于ssm的车辆出租管理系统(源码+文档)

项目简介 车辆出租管理系统实现了以下功能&#xff1a; 车辆出租管理系统实现的功能包括车辆出租管理&#xff0c;车辆管理&#xff0c;检查单管理&#xff0c;客户管理&#xff0c;员工管理&#xff0c;公告管理等功能。 &#x1f495;&#x1f495;作者&#xff1a;落落 &a…