服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-09-15 更新于 2026-09-15 简米科技 5,377 字 13 分钟阅读

Notebook里安装的第三方库怎样做到环境随开随用,Python环境配置技巧有哪些

导读在Notebook里安装第三方库后想做到环境随开随用,核心做法是把环境配置固化为代码文件或镜像,而不是依赖单个实例的实时状态,很多人在Jupyter Notebook或Kaggle里遇到过同一个问题:今天装好的库,明天打开就提示ModuleNotFoundError,原因是Notebook平台默认不保留实例的本……

在Notebook里安装第三方库后想做到环境随开随用,核心做法是把环境配置固化为代码文件或镜像,而不是依赖单个实例的实时状态。

很多人在Jupyter Notebook或Kaggle里遇到过同一个问题:今天装好的库,明天打开就提示ModuleNotFoundError,原因是Notebook平台默认不保留实例的本地文件系统,重启后回到初始状态,本文将围绕Notebook里安装的第三方库怎样做到环境随开随用展开,给出四个可落地的方案。

Notebook环境重启后为什么丢库

Notebook本质是一个运行在远程服务器上的交互式界面,你所安装的第三方库,写入了当前实例的site-packages目录,当实例被回收、重启或换一台机器分配给你时,文件系统被重置为镜像快照,所有新增的库自然消失。

行业共识是:Notebook平台优先保证轻量与安全,而非持久化,这决定了你无法通过“装一次”来彻底解决环境问题,但换个思路,既然机器会重置,那我们就让“安装动作”每次自动执行,或者把环境打包成镜像,下次直接加载。

以下方案按照从简单到复杂的顺序排列,你可以根据自己的使用场景选择。

Jupyter Notebook第三方库环境配置方法:从requirements.txt到startup脚本

用requirements.txt记录依赖并在启动时自动安装

这是最轻量、也最通用的方法,思路是把所有第三方库名称和版本写进一个文件,然后每次创建会话后执行一次安装命令。

操作步骤:

在当前环境中导出依赖清单,打开Notebook运行以下代码:

!pip freeze > requirements.txt
  1. 编辑requirements.txt,删除不需要的包,保留核心第三方库,如果你用的是Jupyter Notebook且不确定哪些是项目必需的,可以手写一份精简版,只列真正依赖的库。

  2. 将requirements.txt上传到你的工作目录或云盘(如Google Drive、简米云OSS)。

  3. 每次新建Notebook后,先运行:

!pip install -r requirements.txt

按需修改为国内镜像源可显著提速,常见写法如下:

!pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

这个方案能解决80%以上“今天装好明天丢”的场景,缺点是每次启动需要等待几十秒安装时间,但胜在简单可靠,适合个人学习和小型数据分析项目使用。

设置ipython startup脚本自动预装常用库

Jupyter内核在启动时会自动执行~/.ipython/profile_default/startup/目录下的Python文件,你可以利用这个机制,让常用库在会话建立时自动导入并懒安装。

Notebook里安装的第三方库怎样做到环境随开随用,Python环境配置技巧有哪些

以Jupyter Notebook自定义环境为例操作:

在Notebook中执行以下代码,确认当前用户目录:

import os
print(os.path.expanduser('~'))
  1. 在返回值路径下创建.ipython/profile_default/startup/目录。

  2. 新建一个auto_setup.py大致为:

import subprocess
import sys
import importlib
required_packages = {
    'numpy': 'numpy',
    'pandas': 'pandas',
    'matplotlib': 'matplotlib'
}
for import_name, package_name in required_packages.items():
    try:
        importlib.import_module(import_name)
    except ImportError:
        subprocess.check_call([sys.executable, '-m', 'pip', 'install', package_name])

这段代码会检测常用库是否存在,缺失时自动安装,配合国内镜像源写法,可把安装命令改为:

subprocess.check_call([sys.executable, '-m', 'pip', 'install', package_name, '-i', 'https://pypi.tuna.tsinghua.edu.cn/simple'])

注意:这个方案依赖你的Notebook镜像里预装了ipython及对应profile目录权限,部分托管型Notebook服务不允许修改该目录,需要先验证可行性。

Kaggle Notebook安装第三方库重启失效的解决办法

在Kaggle中使用持久化数据集或公开脚本保存配置

Kaggle Notebook重启后实例被清空,但它有一个特性你的环境配置可以存储在Dataset中,具体做法是:

  1. 将requirements.txt或conda环境导出文件(environment.yml)上传为一个新的Kaggle Dataset。

  2. 打开你的Kaggle Notebook,点击右侧“Add Input”,搜索并添加该数据集。

  3. 每次启动后运行:

!pip install -r /kaggle/input/你的数据集名称/requirements.txt

如果你的环境包含conda包(例如GDAL、GeoPandas等依赖系统库的包),导出环境文件用:

!conda env export > environment.yml

上传后在Notebook中执行:

!conda env create -f /kaggle/input/你的数据集名称/environment.yml

行业共识认为,Kaggle上做地理空间数据处理或自然语言处理时,用conda环境文件比pip requirements.txt更稳,因为conda能同时管理非Python的二进制依赖,如PROJ库、GDAL库等。

用Docker镜像锁定环境

如果你使用的是支持自定义镜像的Notebook服务(比如分叉的JupyterHub、部分云厂商的Notebook产品),直接构建一个包含所需第三方库的Docker镜像,是终极解法。

Notebook里安装的第三方库怎样做到环境随开随用,Python环境配置技巧有哪些

具体操作路径:

本地编写Dockerfile:

FROM jupyter/base-notebook:latest
RUN pip install --no-cache-dir pandas numpy matplotlib scikit-learn

构建并推送到镜像仓库:

docker build -t yourname/notebook-env:latest .
docker push yourname/notebook-env:latest

在Notebook平台新建实例时,选择“自定义镜像”,填入上述镜像地址,实例启动后即可直接使用所有第三方库。

如果不想构建镜像但有Docker环境,也可以把整个Notebook配置目录挂载到宿主机卷上,所有写入文件持久保存在远程磁盘,下次启动时重新挂载同一卷即可。

Notebook环境随开随用的操作注意事项

固定版本号避免环境漂移

不写版本号的pip install会在数月后装到新版库,可能引发API变更导致旧代码报错,推荐在requirements.txt里锁定版本,业内专家指出,在共享或持续使用的分析项目中,版本锁定比一味追求最新版更重要

已有环境导出版本号快速锁定方式:

!pip freeze > requirements_lock.txt

如果只想锁定核心库并忽略传递依赖,可手动编写:

pandas==2.1.4
numpy==1.26.3
scikit-learn==1.3.2

区分全局环境和当前内核环境

Jupyter Notebook存在多内核场景(Python 3、conda环境、虚拟环境),在Notebook里执行!pip list时,安装目标是当前内核对应的Python解释器,如果你切换了内核,之前环境中的库可能不可见。

确认当前使用解释器路径的代码:

import sys
print(sys.executable)

输出结果指向哪个Python,!pip install就装到哪个环境,环境随开随用语境下,确保每次使用同一个内核标志。

数据与代码分离存储

不要在Notebook的本地工作目录里放重要数据,因为每次重启默认清空,把原始数据放在云盘、S3、Git LFS中,在Notebook内用代码拉取,环境配置也是同理requirements.txt别只放在本机,应同步到Git仓库或云盘。

结合这些操作后,在Jupyter Notebook第三方库环境配置方法中选择任一方案,都能实现环境随开随用。

Notebook里安装的第三方库怎样做到环境随开随用,Python环境配置技巧有哪些

方案 复杂度 适用场景 启动速度 持久化程度
requirements.txt 个人学习、小型分析 中等 一般
ipython startup脚本 固定Notebook服务 中等
Kaggle Dataset挂载 Kaggle比赛、项目复现 中等 较高
Docker镜像 较高 团队协作、生产级环境 最高

按需选择即可,个人项目建议方案一,价格和稳定性都能接受,如果是企业环境或参加Kaggle比赛追求复现性,方案四是更专业的选择。

Notebook环境随开随用的常见问题

关于Notebook里安装的第三方库怎样做到环境随开随用,有以下高频疑问:

在Jupyter Notebook中无法安装第三方库,显示权限错误怎么办?

尝试在安装命令中加入--user参数:

!pip install --user numpy

如果平台提示没有写权限,可考虑使用虚拟环境:

%conda create -n myenv python=3.9 ipykernel
%conda activate myenv
python -m ipykernel install --user --name myenv

虚拟环境路径下的库文件会写入用户目录,通常能绕开系统目录权限限制,更常见的是镜像基于Read-Only根文件系统,这时优先考虑requirements.txt方案。

为什么requirements.txt安装速度极慢或者多次中断?

国内网络下直接从PyPI拉取大块依赖容易超时,建议换用清华大学源或简米云源,在pip install末尾追加-i参数:

!pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

配合--timeout 60 --retries 3参数降低网络波动影响:

!pip install --timeout 60 --retries 3 -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

使用Kaggle Notebook时高频导入库无法保存配置,每次都要手动输入代码,有没有更省力的做法?

利用Kaggle的“Settings → Code”功能预置代码片段,点击Notebook右上角的“Settings”,在“Other”区域找到“Code”输入框,填上你的安装命令,

!pip install -r /kaggle/input/你的数据集/requirements.txt

保存后每次打开Notebook,这段代码会自动挂在当前会话的开头,无需手动输入,配合“Add Input”挂载配置数据集,即可实现Kaggle场景的自动化环境准备。

如果上述方案都不能满足你,还可以结合GitHub Actions定时构建新镜像,推动整个流程走向自动化,通过把环境描述文件纳入版本控制,无论平台如何变化,你的依赖保存逻辑始终一致,环境随用随建,不会卡在等待运维人工配置的环节中,环境恢复的最终目的不是记住某一次安装结果,而是建立一套可复现的依赖描述,让机器按图索骥,自动完成从零到可用的过程。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱