【问题标题】:Flask Attribute error with unpicklingFlask 属性错误与 unpickling
【发布时间】:2017-10-18 16:17:12
【问题描述】:

我正在尝试通过 Flask 应用加载泡菜并显示一些数据。我遵循的结构如下。

package1.py

class myclass:
    #do something
m = myclass()
pickle.load(m,filehandle)

package2.py

from package1 import myclass
def query_processor(params):
    x = pickle.load(filehandle)
    #do stuff on x using params
    return results
if __name__ == "__main__":
    print(query_processor(params)) #Works as expected

flaskapp.py

import package2

@app.route("/", methods=['GET', 'POST'])
def hello():
    result = package2.query_processor(params)
    return render_template(template_name,form=form,msg=result)

在烧瓶应用程序中,我收到如下错误:

AttributeError: Can't get attribute 'myclass' on <module '__main__' from <flask_path>

有没有办法解决这个问题?有人可以解释我为什么会出现这个错误吗?

【问题讨论】:

    标签: python flask pickle


    【解决方案1】:

    为了取消腌制,与腌制对象的时间点相比,您需要具有完全相同的模块和包结构。

    您的异常表明您在作为程序运行的模块中定义了类,因此它没有 *.py 文件的名称,而是名称 __main__。当试图从 Flask 应用程序中解压它时,另一个模块是 __main__ 模块,该模块不包含 myclass 类对象。

    所以最简单的解决方法是在创建泡菜时使用另一个模块作为程序。该模块必须从package1 导入package1 或至少myclass

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      相关资源
      最近更新 更多