如何保存Jupyter Notebook(Anaconda3)的完整运行环境?
一键保存/加载Jupyter Notebook全部环境对象
针对Windows系统下Anaconda环境的Jupyter Notebook,以下几种方法可以实现类似R语言.RData的一键保存/加载全部自定义对象(dataframe、模型、列表等)的功能:
方法1:使用dill库(最便捷)
dill支持序列化几乎所有Python对象,无需逐个指定变量,直接保存全局环境:
- 安装dill
conda install dill -c conda-forge # 或用pip安装 pip install dill - 保存全部环境
import dill # 将当前全局环境所有对象保存到文件 with open('notebook_env.pkl', 'wb') as f: dill.dump(globals(), f) - 加载环境
注意:加载时会覆盖当前环境中同名变量,建议在新Notebook或清空当前环境后操作。import dill # 加载保存的对象并覆盖当前全局环境 with open('notebook_env.pkl', 'rb') as f: loaded_env = dill.load(f) globals().update(loaded_env)
方法2:原生pickle实现(无需额外安装)
利用Python自带的pickle模块,结合全局变量字典过滤系统变量,只保存用户自定义对象:
- 保存
import pickle # 过滤系统内置变量,仅保留用户定义的对象 user_objects = {k: v for k, v in globals().items() if not k.startswith('_') and not isinstance(v, type)} with open('notebook_env.pkl', 'wb') as f: pickle.dump(user_objects, f) - 加载
import pickle with open('notebook_env.pkl', 'rb') as f: user_objects = pickle.load(f) globals().update(user_objects)
方法3:Jupyter魔法命令批量操作
利用Jupyter自带的%store魔法命令实现批量保存/加载:
- 批量保存
# 筛选出用户自定义变量名 user_var_names = [k for k in globals().keys() if not k.startswith('_') and not isinstance(globals()[k], type)] # 批量保存所有用户变量 for var_name in user_var_names: %store $var_name - 批量加载
# 一键加载所有之前保存的变量 %store -r
内容的提问来源于stack exchange,提问作者Yacine Hajji
相关产品推荐
相关产品推荐

