You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pickle.load加载文件时出现__builtin__模块缺失的ModuleNotFoundError

解决pickle加载时的ModuleNotFoundError: No module named 'builtin'

这个错误的核心原因是你要加载的pickle文件是用Python 2生成的——__builtin__是Python 2里的内置模块,在Python 3中它已经被重命名为builtins(没有前后下划线),所以Python 3找不到这个旧模块名。

以下是几种可行的解决办法:

方法1:添加模块名映射

在导入pickle之前,手动把__builtin__映射到Python 3的builtins模块,让pickle能找到对应的模块:

import sys
import builtins
sys.modules['__builtin__'] = builtins

import pickle

# 你的原有加载代码
print('Restoring variable environment')
with open(VARIABLES_FILE,'rb') as variables_file:
    Compartment_CL = pickle.load(variables_file)
    MetList_CL = pickle.load(variables_file)
    GeneList = pickle.load(variables_file)
    RxnList_CL = pickle.load(variables_file)
print('Variable environment restored')

方法2:启用pickle的导入修复

pickle自带了fix_imports参数(默认值为True,但显式设置更稳妥),它会自动转换Python 2到3的导入名称,解决这类模块名不兼容问题:

import pickle

print('Restoring variable environment')
with open(VARIABLES_FILE,'rb') as variables_file:
    Compartment_CL = pickle.load(variables_file, fix_imports=True)
    MetList_CL = pickle.load(variables_file, fix_imports=True)
    GeneList = pickle.load(variables_file, fix_imports=True)
    RxnList_CL = pickle.load(variables_file, fix_imports=True)
print('Variable environment restored')

方法3:转换为跨版本通用格式(长期方案)

如果上述方法都无效,说明pickle里的对象可能依赖Python 2的其他特性,建议用Python 2重新导出数据为JSON、CSV这类跨版本兼容的格式,再用Python 3读取。pickle的版本兼容性本来就差,用通用格式能避免后续类似问题。

内容的提问来源于stack exchange,提问作者Helena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 12:17:55