离线安装Jupyter Notebook必须先在联网环境用pip download下载jupyter、notebook、ipykernel、ipython、jinja2、tornado、prometheus-client等核心包及依赖,并匹配目标机Python版本、架构与ABI;安装时需带--find-links和--no-index参数,且须验证各模块可import及前端static资源完整。

离线安装 Jupyter Notebook 的核心前提
必须提前在有网络的机器上下载完整依赖包,不能只下 jupyter 这个包名——它只是入口,真正运行靠的是 notebook、ipykernel、traitlets 等十多个子包,缺一不可。
怎么用 pip download 打包所有依赖
在联网环境执行命令,把 Jupyter Notebook 及其全部递归依赖下载到本地文件夹:
pip download jupyter --no-deps --platform manylinux_2_17_x86_64 --python-version 310 --abi cp310 -d ./jupyter_offline
但上面命令漏掉依赖,正确做法是:
- 先用
pip install --dry-run --no-deps jupyter看它到底要装哪些包(实际会输出一堆包名) - 更稳妥:直接运行
pip download jupyter notebook ipykernel ipython jinja2 tornado prometheus-client,这几个是核心运行链,覆盖 95% 场景 - 加
--find-links ./jupyter_offline --no-index参数确保离线安装时不查 PyPI - 注意
pyzmq和numpy有 C 扩展,若目标机器架构不同(比如 ARM),需用对应--platform和--only-binary=:all:
离线安装时 pip 报 “No matching distribution” 怎么办
这是最常卡住的地方:你下载的 wheel 包和目标机器 Python 版本/架构不匹配。典型错误包括:
- 在 macOS 上下载了
cp310-macosx_10_9_x86_64.whl,却往 CentOS 服务器上装 - Python 是 3.11,但下了
cp310后缀的包 -
tornado6.x 要求 Python ≥3.8,而你用的是 3.7,得手动降级到 tornado==5.1.1 - 没下载
setuptools和wheel本身——它们是安装器,离线时也得带上
验证安装是否真正可用
装完别急着 jupyter notebook,先确认关键组件能 import:
python -c "import notebook; print(notebook.__version__)"; \ python -c "import ipykernel; print(ipykernel.__version__)"; \ python -c "import tornado.web"
如果报 ModuleNotFoundError: No module named 'tornado',说明 tornado 没装进环境——离线安装时容易因依赖顺序或版本冲突被跳过,建议用 pip install --force-reinstall --no-deps 单独重装它。
真正麻烦的是前端静态资源缺失:离线装完可能打开页面空白,因为 notebook 包里没带 static 目录,得确认下载的 wheel 是否含 data_files(查看 pip show notebook 输出里的 Location,再进目录找 share/jupyter/notebook/static)。


















