python - 解压函数时出现 Flask AttributeError
问题描述
我有一个笔记本文件,我在其中转储了一个模型和一个名为custom_pipeline()
pickle.dump(custom_pipeline, open('custom_pipeline.pkl','wb'))
pickle.dump(model, open('model.pkl','wb'))
在我的 app.py 文件中,我将模型和函数反序列化如下
import pickle
app = Flask(__name__)
model = pickle.load(open('model.pkl', 'rb'))
custom_pipeline = pickle.load(open('custom_pipeline.pkl', 'rb'))
解压模型文件没有错误,应用程序运行成功。但是,当我添加 unpickling 行时custom_pipeline
,会引发以下错误:
AttributeError: Can't get attribute 'custom_pipeline' on <module '__main__' from flask_path>
我需要反序列化该函数并使用来自应用程序的输入数据调用它。我是烧瓶的新手,想知道如何在应用程序文件中使用自定义函数。
解决方案
我们不能序列化函数,除非它们被可序列化的类包裹。如果我们直接想要,那么cloudpickle
允许泡菜功能。
import cloudpickle
cloudpickle.dump(custom_pipeline, open('custom_pipeline.pkl','wb'))
然后在应用文件中
import pickle
import cloudpickle
app = Flask(__name__)
model = pickle.load(open('model.pkl', 'rb'))
custom_pipeline = cloudpickle.load(open('custom_pipeline.pkl', 'rb'))
推荐阅读
- android - 如何使用 Volley 解析数组中的 JSON 数组?
- r - 如何使用 R 中的线性回归预测未来值
- maps - RentFaster Scalable Map View 连接到数据库
- javascript - 为什么我在 Javascript 中创建新窗口时无法从 JSON 文件加载图像
- java - 将多个源流连接到同一组分支
- sql - 确定三角形的类型
- python - Python:如何删除字典中的符号?
- java - 在 MacOS 中使用 Java 程序执行 mysqldump
- spring - Tomcat 服务未正确重启
- java - 引起:java.lang.NoClassDefFoundError: com/amazonaws/auth/BasicAWSCredentials